豆のXML設定(4) - 自動組立


チュートリアルの春シリーズ


自動組立

使用の前に導入<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>設定オーバーライド自動アセンブリ構成。
  • プリミティブデータタイプがサポートされていないオリジナルデータ型のモードの値が自動的に注入を組み立てることができません。
  • それは十分に正確ではありません:手動組立精度が手動アセンブリを利用するために、自動組立に優れています。

おすすめ

転載: www.cnblogs.com/jinbuqi/p/10971684.html