인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

아카펠라님의 프로필 이미지
아카펠라

작성한 질문수

스프링 핵심 원리 - 기본편

object provider 질문드립니다.

작성

·

242

0

안녕하세요. 빈 스코프 관련 질문드립니다.

singleton bean에서 prototype bean을 사용하기위해

objectprovider.getObject()를 사용하는데요

빈 스코프가 프로토타입인 경우 application context는 요청때마다 빈을 새로 생성해서 전달하고

그 이상은 관여 안한다고 들었습니다.

그렇다면 싱클톤 빈의 특정 메서드 내에서 objectProvider.getObject()를 수행해 사용한 프로토타입 bean은

그 메서드가 종료되면 바로 gc 대상이 되는 건가요?

혹시 계속 존재하거나,  직접 소멸시켜 줘야하는건가요?

답변 부탁드리겠습니다.

감사합니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 아카펠라님

빈 스코프가 프로토타입인 경우 직접 관리해야 합니다.

만약 싱글톤 빈이 필드에 보관하면, 싱글톤 빈이 프로토타입 빈을 참조하고 있기 때문에 GC의 대상이 안될 것이고, 만약 지역변수에서 프로토타입 빈을 참조한다면, 지역변수의 사용영역을 벗어나면 GC의 대상이 되겠지요?

단순하게 생각해서 objectProvider.getObject()를 new PrototypeBean()으로 대체해서 생각하시면 됩니다.

감사합니다.

아카펠라님의 프로필 이미지
아카펠라

작성한 질문수

질문하기