본문 바로가기

SpringFramework Core - I. IoC 컨테이너/4. 의존성

4.3. depends-on 사용하기

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-dependson

 

 

만약 bean이 다른 bean에게 의존성을 제공한다면, 이는 주입받는 bean의 프로퍼티가 된다는 것을 의미한다. XML 기반의 설정 메타데이터에서는 보통 <ref/> 요소를 통해 이루어진다. 그러나 가끔은 의존성이 덜 직접적인 경우가 있다. 데이터베이스 드라이버 등록처럼 static한 initializer가 발동되어야 하는 경우가 그 예시다. 'depends-on' 속성은 이 속성을 사용하는 bean이 초기화되기 전에, 의존성 bean들이 초기화될 수 있도록 명확하게 강제한다. 다음 예시는 하나의 bean에 depends-on 속성을 사용하여 나타낸 의존성이다.

<bean id="beanOne" class="ExampleBean" depends-on="manager" />
<bean id="manager" class="ManagerBean" />

여러 bean들에 의존성을 표시하려면, depends-on 속성에 bean들의 이름을 리스트로 제공하면 된다. 이때 콤마(,), 스페이스( ), 세미콜론(;)이 유효한 구분자가 된다.

<bean id="beanOne" class="ExampleBean" depends-on="manager, accountDao">
    <property name="manager" ref="manager" />
</bean>

<bean id="manager" class="ManagerBean" />
<bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />

 

depends-on 속성을 통해 의존성의 초기화 타이밍을 설정할 수 있다. 싱글턴 bean에서는 의존성의 소멸 타이밍까지 설정할 수 있다. depends-on 관계를 통해 의존하는 bean들이 먼저 소멸되고나면, 의존성을 제공하던 bean들이 스스로 소멸된다. 그러므로 depends-on은 shutdown 명령 또한 제어할 수 있다.