使用 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 屬性可以指定初始化時的依賴,並且僅在 singleton bean 的情況下,還可以指定相應的銷燬時依賴。與給定 bean 定義 depends-on 關係的依賴 bean 會先被銷燬,然後才銷燬給定 bean 本身。因此,depends-on 也可以控制關閉順序。 |