7.4.3 使用depends-on

如果一个bean是另一个的依赖,通常意味着一个bean被设置为另一个bean的属性。通常,可以在基于XML的配置元数据中通过<ref/>元素来完成此任务。不过,有时候bean之间的依赖关系没有这么直接;例如,类中的静态初始化块(initializer)(比如数据库驱动的注册)需要先被触发。depends-on属性可以显式地强制一个或多个bean在使用它们的bean初始化之前被初始化。下面的示例使用depends-on属性来表示对单一bean的依赖关系:

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

要表示对多个bean的依赖,需提供一个bean名称的列表作为depends-on属性的值,使用逗号、空格和分号作为有效分隔符:

  1. <bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
  2. <property name="manager" ref="manager" />
  3. </bean>
  4. <bean id="manager" class="ManagerBean" />
  5. <bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />

bean定义中的depend-on属性可以指定初始化时的依赖关系,以及仅在单例Bean的情况下,可以指定相应的销毁时的依赖关系。