チュートリアルの春シリーズ
- 春のフレームワークの紹介
- 春のフレームワークモジュール
- 春の開発環境を構築する(エクリプス)
- シンプルなSpringアプリケーションを作成します。
- コントロールのコンテナの春反転(制御の反転 - IOC)
- おくる依存性注入(DI - 依存性注入)
- 豆のXML構成は(1) - XMLの設定によってBeanのロード
- 豆XMLコンフィギュレーション(2) - 豆の範囲およびライフサイクル・コールバック・メソッドの構成
- 豆のXML構成(3) - コンフィギュレーションの依存性注入
- 豆のXML設定(4) - 自動組立
- 豆の注釈(アノテーション)の設定(1) - アノテーションによってBeanのロード
- 豆アノテーション(注釈)の構成(2) - 豆の範囲およびライフサイクル・コールバック・メソッドの構成
- 豆アノテーション(注釈)の構成(3) - コンフィギュレーション依存性注入
- ビーンJavaの設定
- 春のアスペクト指向プログラミング(AOP)
- 春のイベント(1) - 内蔵のイベント
- 春のイベント(2) - カスタムイベント
自動組立
使用の前に導入<constructor-arg>
し、<property>
依存関係を注入し、我々はまた、自動組立は、構成の書き込みを減らす大幅に、依存性注入を達成するための手段を使用することができます。
次の方法で依存関係を検索するオートワイヤリング:
- BYNAME:プロパティ名で。XMLは、名前とクラス依存マッチング豆のID属性。
- byType:データ型属性によって。豆の複数が一致することができた場合にプロパティデータ型と依存マッチングクラスのBeanタイプは、致命的な例外がスローされます。
- コンストラクタ:データ型コンストラクタの引数。データ型と一致し、容器が、試合豆の種類を見つける致命的な例外をスローしなかった場合、コンストラクタのパラメータは、豆の種類によって異なります。
自動組立例:
public class App {
private Service mainService;
private Service[] services;
// 注入Service实例
public App(Service main){
this.mainService = main;
}
// 注入Service实例数组
public App(Service[] services){
this.services = services;
}
public Service getMainService() {
return mainService;
}
// 通过setter方法注入服务实例
public void setMainService(Service mainService) {
this.mainService = mainService;
}
public Service[] getServices() {
return services;
}
// 通过setter方法注入服务实例数组
public void setServices(Service[] services) {
this.services = services;
}
}
XML設定:
<bean id="app" class="App" autowire="byType"></bean>
byType /コンストラクタ自動組立による依存関係のアレイ。setterメソッドを実装する必要がありますbyType / BYNAME、Javaクラスを使用します。
使用byType /コンストラクタ、ビーンは、によって提供することができる複数の一致が存在してもよいautowire-candidate="false"
マッチングを除去します。
例:
<bean id="app" class="App" autowire="byType"></bean>
<bean id="database" class="Database" autowire-candidate="false"></bean>
<bean id="mail" class="Mail" autowire-candidate="false"></bean>
<bean id="logger" class="Logger" autowire-candidate="true"></bean>
BYNAMEを使用して、mainService、アプリケーションクラスの属性は次のように自動的に組み立てmainService
と<bean id="mainService"
試合は:
<bean id="app" class="App" autowire="byName"></bean>
<bean id="database" class="Database"></bean>
<bean id="mail" class="Mail"></bean>
<bean id="mainService" class="Logger"></bean>
自動組立の制限事項
- 覆われた可能性が依然によって:
<constructor-arg>
と<property>
設定オーバーライド自動アセンブリ構成。 - プリミティブデータタイプがサポートされていないオリジナルデータ型のモードの値が自動的に注入を組み立てることができません。
- それは十分に正確ではありません:手動組立精度が手動アセンブリを利用するために、自動組立に優れています。