二つの方法は、以前のブログで自動組立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の方法は、非常に広いアプリケーションであります