Autowired、リソースの使用スプリング、注入します

基本:スプリング地図を用いたボトム、idはビーンIDであり、値は、Beanクラスまたはインスタンスです。

1:ロード順豆。
@Bean( "TestDAO")
公衆testDao3 TestDAO(){
TestDAO TestDAO TestDAO新しい新=();
testDao.setFlag(」3" );
TestDAOを返します;
}

( "TestDAO")@Bean
公共TestDAO TestDAO(){
; TestDAO TestDAO TestDAO新しい新=()
testDao.setFlag( "2");
; TestDAOを返す
}

@Repository
{publicクラスTestDAO
。this.flag = 1;
}

豆のみ存在しますA。すなわち:フラグ==豆3つの。
シーケンス:最初ComponentScan注釈付きBeanのように行います。豆の設定方法を実行するために移動します。
同じBeanがある場合。Bean構成の中に豆内のノートを交換します。
複数のプロファイル同じBeanがある場合。最初は、Beanのメソッドを保存します。

2:容器の異なるビーンID場合IOC、時間の同じインスタンス。
@Bean( "testDao1")
公衆TestDAO TestDAO(){
新新しいTestDAO()を返す;
}

TestDAO TestDAO = app.getBean(TestDao.class)を、直接エラー。
しかし、単一のBeanは、マッチングが2を期待見出さ:TestDAO、testDao2

。3:コンテナが存在しない場合にBeanを取得
= app.getBeanオブジェクトo( "AAA" ); 直接所与。
名前の豆NO「AAA」利用可能な

4:Autowiredが使用されている
@Autowired
プライベートTestDAO testDao123を。

豆の例を見つける意志がない場合testDao123 Autowiredよると、まず、豆のIDになります。
あなたは、エラーが見つからない場合。タイプのない適格BeanのTestDao "利用可能:
時間のときに同じインスタンス。与えられる
利用可能な単一のマッチングBeanを期待が、見出さ 2:testDao、testDao3

複数のインスタンスが存在する場合。指定できるインスタンス修飾子。
@Qualifier(testDao3)

も開発され@Primary使用することができますが、それは最初の選択肢となります。あなたが複数の単語を使用している場合でも、エラーが報告されます。
最後の一つの中にほかの豆の中で「プライマリ」の候補者が見つかりました:[TestDAO、testDao13]は

falseに必要な=、IOCの初期化時には、何の豆を、対応するならば、与えられていないされていません。nullに設定してください。

5:リソース使用
@Resource
プライベートTestDAO testDao123;

豆の例を見つける意志がない場合、リソースは最初に、IdのtestDao123に基づいて豆を探します。
あなたは、エラーが見つからない場合。タイプのない適格BeanのTestDao "利用可能:

時間のときに同じインスタンス。文句を言うでしょう
単一のマッチングBeanを期待されるが、2を発見した: testDao、testDao3

@Resource(名=「testDao13」)
名前はBean名で指定される上記IDでない

(タイプ= TestDao.classの)@Resource
タイプ指定されたタイプの。まず、豆ID = testDaoを見つけます。
あなたが指定した型に行っていない場合。時間のときに同じインスタンス。エラーが発生しました。

6:注入する使用
@Inject
プライベートTestDAO testDao123;

豆の一例を見つける意志がない場合を注入はtestDao123によれば、まず、ビーンIDになります。
あなたは、エラーが見つからない場合。タイプのない適格BeanのTestDao "利用可能:

時間のときに同じインスタンス。文句を言うでしょう
単一のマッチングBeanを期待されるが、2を発見した: testDao、testDao3



 

おすすめ

転載: www.cnblogs.com/orange-time/p/11832414.html