depends-on を使用する

Bean が別の Bean の依存関係である場合、通常は 1 つの Bean が別の Bean のプロパティとして設定されていることを意味します。通常、これは XML ベースのメタデータの <ref/> 要素> またはオートワイヤーによって実現されます。

ただし、Bean 間の依存関係が直接的でない場合もあります。例としては、データベースドライバーの登録など、クラス内の静的初期化子をトリガーする必要がある場合があります。depends-on 属性または @DependsOn アノテーションを使用すると、この要素を使用する Bean が初期化される前に、1 つ以上の Bean を明示的に強制的に初期化できます。次の例では、depends-on 属性を使用して単一の Bean への依存関係を表現しています。

<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 の場合のみ、対応する破棄時の依存関連の両方を指定できます。特定の Bean との depends-on 関連を定義する依存 Bean は、特定の Bean 自体が破棄される前に、最初に破棄されます。depends-on はシャットダウン順序も制御できます。