使用 depends-on
如果一個 Bean 是另一個 Bean 的依賴,這通常意味著一個 Bean 被設定為另一個 Bean 的屬性。通常,您可以透過 XML 格式元資料中的 <ref/> 元素 或透過 自動裝配 來實現這一點。
然而,有時 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 屬性可以指定初始化時依賴,並且,僅對於單例 Bean,還可以指定相應的銷燬時依賴。與給定 Bean 之間定義了 depends-on 關係的依賴 Bean 將在給定 Bean 銷燬之前首先被銷燬。因此,depends-on 也可以控制關閉順序。 |