使用 depends-on
depends-on
然而,有时候 bean 之间的依赖关系并不是那么直接。例如,当一个类中的静态初始化器需要被触发时,比如数据库驱动程序的注册。depends-on
属性或 @DependsOn
注解可以显式地强制在使用该元素的 bean 初始化之前,先初始化一个或多个 bean。下面的示例使用 depends-on
属性来表示对单个 bean 的依赖:
<bean id="beanOne" class="ExampleBean" depends-on="manager"/>
<bean id="manager" class="ManagerBean" />
要表达对多个 bean 的依赖关系,请提供一个 bean 名称列表作为 depends-on
属性的值(逗号、空格和分号是有效的分隔符):
<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
属性可以同时指定初始化时的依赖关系,并且在仅限于 singleton bean 的情况下,还可以指定相应的销毁时的依赖关系。定义了与给定 bean 的 depends-on
关系的依赖 bean 会首先被销毁,然后才是给定 bean 本身。因此,depends-on
还可以控制关闭顺序。