작성
·
242
0
안녕하세요. 빈 스코프 관련 질문드립니다.
singleton bean에서 prototype bean을 사용하기위해
objectprovider.getObject()를 사용하는데요
빈 스코프가 프로토타입인 경우 application context는 요청때마다 빈을 새로 생성해서 전달하고
그 이상은 관여 안한다고 들었습니다.
그렇다면 싱클톤 빈의 특정 메서드 내에서 objectProvider.getObject()를 수행해 사용한 프로토타입 bean은
그 메서드가 종료되면 바로 gc 대상이 되는 건가요?
혹시 계속 존재하거나, 직접 소멸시켜 줘야하는건가요?
답변 부탁드리겠습니다.
감사합니다.
답변 1
0
안녕하세요. 아카펠라님
빈 스코프가 프로토타입인 경우 직접 관리해야 합니다.
만약 싱글톤 빈이 필드에 보관하면, 싱글톤 빈이 프로토타입 빈을 참조하고 있기 때문에 GC의 대상이 안될 것이고, 만약 지역변수에서 프로토타입 빈을 참조한다면, 지역변수의 사용영역을 벗어나면 GC의 대상이 되겠지요?
단순하게 생각해서 objectProvider.getObject()를 new PrototypeBean()으로 대체해서 생각하시면 됩니다.
감사합니다.