반응형
스프링
컨테이너는 부모-자식 관계의 계층 구조를 가질 수 있다.
자식에 속하는 컨테이너의 빈은 부모 컨테이너에 속한 빈을 참조할 수 있다.
즉, 의존 객체로 사용할 수 있다.
반대로 부모 컨테이너에 속한 빈은 자식 컨테이너에 속한 빈을 참조할 수는 없다.
부모/자식 구조를 만들고 싶다면, 자식 컨테이너를 생성할 때 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 |