2018. 7. 28. 21:57ㆍWeb/Spring
<bean>의 depends-on 속성
applicationContext.xml에 빈정의에 대한 설정을 모두 마치고 실행하게 되면 빈의 생성은 선언한 순서대로 생성이 된다.(만약 의존하는 빈이 다른 위치에 있다면 그 빈을 먼저 생성하고 다시 순서대로 내려온다.) 하지만 명시적으로 의존성이 들어나지 않고 암시적으로 빈이 어떠한 다른 빈을 의존하고 있는 경우가 있을 수 있다. 만약 명시적으로 의존이 들어나 있다면 스프링컨테이너는 알아서 순서에 맞춰 빈을 생성해 주지만 암시적으로 겉으로 들어나지 않은 의존성 같은 경우는 컨테이너도 어쩔수가 없다.
예를 들면,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <bean id="service" class="sample.spring.chapter04.bankapp.service.FixedDepositServiceImpl"> <property name="fixedDepositDao"> <bean class="sample.spring.chapter04.bankapp.dao.FixedDepositDaoImpl" /> </property> <constructor-arg index="0" value="META-INF/config/appConfig.properties" /> </bean> <bean id="eventSenderSelectorService" class="sample.spring.chapter04.bankapp.service.EventSenderSelectorServiceImpl"> <constructor-arg index="0" value="META-INF/config/appConfig.properties" /> </bean> | cs |
eventSenderSelectorService라는 빈이 생성될때, appConfig.properties 파일에 어떠한 정보를 남겨준다. 그러면 service 빈이 그 appConfig.properties 파일에 작성된 정보를 이용하여 빈생성과정이 이루어진다. 위의 설정파일에서는 암시적으로 service 빈이 eventSenderSelectorService 빈을 의존하고 있는 것이다. 그래서 service 빈이 먼저 생성되는 과정이 된다면? 빈생성 과정에서 오류가 생기고 말것이다. (eventSenderSelectorService 빈 생성이 먼저 이루어져야함으로) 여기서 사용할 수 있는 속성이 depends-on 속성이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <bean id="service" class="sample.spring.chapter04.bankapp.service.FixedDepositServiceImpl" depends-on="eventSenderSelectorService "> <property name="fixedDepositDao"> <bean class="sample.spring.chapter04.bankapp.dao.FixedDepositDaoImpl" /> </property> <constructor-arg index="0" value="META-INF/config/appConfig.properties" /> </bean> <bean id="eventSenderSelectorService" class="sample.spring.chapter04.bankapp.service.EventSenderSelectorServiceImpl"> <constructor-arg index="0" value="META-INF/config/appConfig.properties" /> </bean> | cs |
이렇게 depends-on으로 의존하고 있는 빈을 들어내줌으로써 eventSenderSelectorService 빈을 먼저 생성한 후에 service 빈을 생성한다.
depends-on속성에는 ","을 구분자로 여러개의 빈을 의존하고 있음을 명시할 수 있다.
하지만 이 속성은 자식 빈정의에는 상속되지 않는 속성임에 주의해야한다.(부모빈에 이 속성이 정의되어 있어도 자식에는 상속되지 않음)
'Web > Spring' 카테고리의 다른 글
@Value 어노테이션 (0) | 2018.08.12 |
---|---|
JSR 250 / 330 어노테이션들의 사용법 (0) | 2018.08.12 |
Springframework(스프링) util schema 사용하기 (0) | 2018.07.10 |
Springframework(스프링) p & c schema 사용하기 (0) | 2018.07.10 |
Springframework(스프링) 빈 정의 상속 (0) | 2018.07.09 |