• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

PrototypeBean 생성시점 질문입니다.

23.02.07 17:48 작성 조회수 228

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

박희재님 안녕하세요.

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

감사합니다.