depends-on を使用する

Bean が別の Bean の依存関係である場合、通常は、ある Bean が別の Bean のプロパティとして設定されていることを意味します。通常、XML ベースの構成メタデータの <ref/> 要素でこれを実現します。ただし、Bean 間の依存関係が直接的でない場合があります。例は、データベースドライバーの登録など、クラス内の静的初期化子をトリガーする必要がある場合です。depends-on 属性は、この要素を使用する 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 はシャットダウン順序も制御できます。