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

코딩먹는하마님의 프로필 이미지
코딩먹는하마

작성한 질문수

스프링 핵심 원리 - 기본편

프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점

PrototypeBean 생성시점 질문입니다.

해결된 질문

작성

·

262

0

@Test
 void singletonClientUsePrototype() {
 AnnotationConfigApplicationContext ac = new
AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class);
}

static class ClientBean {
 private final PrototypeBean prototypeBean;
 @Autowired
 public ClientBean(PrototypeBean prototypeBean) {
 this.prototypeBean = prototypeBean;
	 }
}

이 코드에서

new
AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class);

이때 ClientBean은 싱글톤이어서 스프링 컨테이너에 생성되고 PrototypeBean은 프로토타입이라 생성되지 않습니다. (조회시점에 생성되므로 - getBean)

static class ClientBean {
 private final PrototypeBean prototypeBean;
 @Autowired
 public ClientBean(PrototypeBean prototypeBean) {
 this.prototypeBean = prototypeBean;
	 }
}

하지만 여기서 (의존관계 자동주입 시점)에 스프링컨테이너에 프로토타입빈을 요청하면 스프링컨테이너는 프로토타입빈을 생성해서 반환합니다.

반환된 프로토타입빈을 ( 클라이언트 빈의 생성자를 통해) this.prototypeBean=prototypeBean; 에 의해서 내부필드에 주입되어서 보관합니다.

라고 이해를 했는데 맞는지 궁금합니다.

답변해주시면 정말 감사하겠습니다.

답변 1

0

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

박희재님 안녕하세요.

생각하신 내용이 맞습니다.

감사합니다.

코딩먹는하마님의 프로필 이미지
코딩먹는하마

작성한 질문수

질문하기