본문 바로가기

SpringFramework Core - I. IoC 컨테이너/5. Bean Scopes

5.3. 싱글턴 bean과 프로토타입 bean 사이의 의존성

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-sing-prot-interaction

 

 

싱글턴 bean을 프로토타입 bean의 의존성과 함께 사용할때는, 의존성이 인스턴스화될 때 생긴다는 것을 주의하라. 그래서 프로토타입 bean을 싱글턴 bean 안으로 주입하면 새로운 프로토타입 bean이 인스턴스화되어 싱글턴 bean 안으로 들어간다. 싱글턴 bean을 프로토타입 bean의 의존성과 함께 사용할때는 의존성이 인스턴스 시점에 생긴다는 것을 주의하라. 그래서 프로토타입 bean을 싱글턴 bean 안으로 주입하면 새로운 프로토타입 bean이 인스턴스화되어 싱글턴 bean 안으로 들어간다. 싱글턴 bean에 제공된 프로토타입 인스턴스는 항상 유일한 인스턴스이다.

 

그러나 싱글턴 bean이 런타임 시에 계속해서 새로운 프로토타입 bean을 얻기를 원하는 상황이라고 가정해보자. 이때는 싱글턴 bean 안으로 프로토타입 bean을 주입할 수 없다. 왜냐하면 스프링 컨테이너가 싱글턴 bean을 만든 후, 필요한 의존성들을 주입해줄 때 딱 한번만 주입이 일어나기 때문이다. 만약 런타임 시에 새로운 프로토타입 bean을 여러번 주입받고 싶다면 메서드 주입을 참고하라.