본문 바로가기

BackEnd/Spring

스프링 컨테이너 계층 구조

반응형

스프링


컨테이너는 부모-자식 관계의 계층 구조를 가질 수 있다.


자식에 속하는 컨테이너의 빈은 부모 컨테이너에 속한 빈을 참조할 수 있다. 


즉, 의존 객체로 사용할 수 있다.


반대로 부모 컨테이너에 속한 빈은 자식 컨테이너에 속한 빈을 참조할 수는 없다.



부모/자식 구조를 만들고 싶다면, 자식 컨테이너를 생성할 때 setParent() 메서드를 이


용해서 부모 컨테이너를 지정해주면 된다. 아래 코드는 부모/자식 관계를 설정하는 예를


보여주고 있다.


1
2
3
4
5
6
7
8
9
GenericXmlApplicationContext parent = new GenericXmlApplicationContext("classpath:conf-parent.xml");
 
GenericXmlApplicationContext child = new GenericXmlApplicationContext()
 
child.setParent(parent);
 
child.load("classpath:conf-child.xml);
 
child.refresh();
cs


부모 컨테이너를 지정할 때 주의할 점은 자식 컨테이너의 빈을 초기화하기 전에 부모 컨


테이너를 먼저 지정해야 한다는 점이다. 만약 부모 컨테이너를 지정하기 전에 자식 컨테이너를 초


기화하면,자식 컨테이너를 초기화하는 과정에서 익셉션이 발생하게 될 것이다.( 자식 컨테이너가 


부모컨테이너의 빈을 참조하고있을 경우!)


일반적으로 컨테이너 계층 구조를 사용할 일이 많진 않지만,서로 다른 두 개의 컨테이너


에서 공통 기능을 필요로 할 때 계층 구조를 유용하게 쓸 수 있다. 예를 들어,메일 발송,


메시지 전송 등의 공통 기능을 제공하는 빈을 부모 컨테이너에 생성하고,여러 자식 컨테


이너에서 이들 빈을 시용해서 기능을 사용하도록 구성할 수 있을 것이다.

반응형

'BackEnd > Spring' 카테고리의 다른 글

컨트롤러의 리턴타입  (0) 2020.02.09
Autowired 와 Resource 와 lnject 어노테이션정리  (0) 2020.02.09
스프링 mvc의 기본 구조  (0) 2020.02.08
DI의 장점  (0) 2020.02.04
의존성 주입방법 2가지  (0) 2020.02.04