春の注釈駆動型の講義 - 輸入ノート@

二つの方法は、以前のブログで自動組立Beanコンテナを許可します:

  図1は、注釈を使用して組み立て@Bean

  図2は、@コントローラ、サービス@、@リポジトリコンポーネント注釈をロードすることができる@豆と@ComponentScanスキャン方式の走査を用いてコーティングすること

サードパーティのクラスを参照するときに注釈を使用するもう1つの方法は、使用を@importました

使用法:

まず、注釈のタイプに割り当てられた値を作成するには、メインコンフィギュレーションクラスに直接@importのコメントを追加

まず、外部の着信をロードするためのクラスを作成します

パブリック クラス色{ 
    ... 
}

容器内に作成、スキャンしたメモを可能にする任意のパッケージを追加していない見ることができるように容器内にロードされていません

メインコンフィギュレーションクラスに注釈を追加し@import

@Configuration 
@import({カラー。クラス })// 注釈タイプがIOCロードクラスの内部に必要とされる
パブリック クラスMainConfig2 { 

}

Testクラスと結果を返します:

パブリック クラスIOCTest { 
    @Test 
    公共 ボイドTEST4(){ 
        ApplicationContextのApplicationContextの = 新しい AnnotationConfigApplicationContext(MainConfig2。クラス)。
        文字列[]名 = applicationContext.getBeanDefinitionNames()。// 返回容器中所有豆的に名字
        のために(文字列名:名){ 
            System.out.printlnは(名前)。
        } 
    } 
}

結果:

mainConfig2 
com.wxj.bean.Color

可能な観察は、デフォルトのインポート・コンポーネントは、完全なクラス名IDで@import IOCコンテナを使用しています

第二に、実現ImportSelectorインタフェース

1)(ImportSelectorインタフェースを実装するメソッドを作成

パブリック クラス MyImportSelector 実装ImportSelector {
     / ** 
     * AnnotationMetadataクラス名がノート、注釈および他の情報を得ることができる
     * 
     *返される文字列の配列の完全なクラス名が@importがロードされたクラスノートにすることである
     * / 
    パブリック文字列[] selectImportsを(AnnotationMetadata importingClassMetadataを){ 
        
        戻り 新しい新しい文字列[] {「com.wxj.bean.Colorは」}; // IOCコンテナ完全なクラス名を管理する必要があり、複数のクラスから形成することができる分離
    } 

}

図2は、コンフィギュレーション・クラスにアノテーション@import主値の値を変更します

@Configuration 
@import({MyImportSelector。クラス})
 パブリック クラスMainConfig2 { 
  
}

3、再実行

mainConfig2 
com.wxj.bean.Color

第三に、ImportBeanDefinitionRegistrarインタフェース(カスタム手豆)を達成するために

次のように1は、ImportBeanDefinitionRegistrarを達成するために、コードは次のとおりです。

パブリック クラス MyImportBeanDefinitionRegistrar 実装はImportBeanDefinitionRegistrar {
     / ** 
     * importingClassMetadata:直流クラス情報
     *レジストリ:Beanコンテナとして登録し、それを使用することにより、Beanクラスの定義を登録します
     *すべての豆手動登録、呼び出しによって容器に加え必要BeanDefinitionRegistry手動登録方法registerBeanDefinition 
     *          
     * / 
    公共 ボイドregisterBeanDefinitions(AnnotationMetadata importingClassMetadata、BeanDefinitionRegistryレジストリ){
         // ビーンを指定する定義情報... 
        RootBeanDefinition BeanDefinition = 新しい新しい RootBeanDefinition(カラー。クラス);
         // Beanへの容器からidが定義されました
        registry.registerBeanDefinition( "カラー" 、beanDefinition)。
    } 

}

2、主な構成変更クラス

@Configuration 
@import({MyImportBeanDefinitionRegistrar。クラス})
 パブリック クラスMainConfig2 { 
}

3、営業成績

mainConfig2 

注:ソースコードSpringBoot後で読み出す場合、第2の方法は、非常に広いアプリケーションであります

おすすめ

転載: www.cnblogs.com/xingjia/p/11209557.html