我想澄清一下:彈簧自動裝配自動檢測
關於自動裝配「自動檢測」
在一些資源,我發現如果 「默認的構造被發現,那麼‘自動佈線構造’適用 如果。不適用「按類型自動佈線」
而在某些資源中,我發現如果 「找到默認構造函數,則應用」按類型自動佈線「。 如果不是「自動佈線構造函數」適用。
任何人都可以確認哪個是正確的?與此混淆。
我想澄清一下:彈簧自動裝配自動檢測
關於自動裝配「自動檢測」
在一些資源,我發現如果 「默認的構造被發現,那麼‘自動佈線構造’適用 如果。不適用「按類型自動佈線」
而在某些資源中,我發現如果 「找到默認構造函數,則應用」按類型自動佈線「。 如果不是「自動佈線構造函數」適用。
任何人都可以確認哪個是正確的?與此混淆。
這裏應該沒有混淆。
autodeiring by autodetect使用兩種模式之一即構造函數或byType模式。首先它會嘗試尋找有參數的有效的 構造函數,如果發現構造函數模式被選中。如果bean中沒有定義構造函數,或者存在明確的默認無參數構造函數,則選擇autowire byType模式。
在Spring框架中,您可以自動連線自動佈線功能。要啓用它,只需在中定義「autowire」屬性即可。
<bean id="customer" class="com.midhun.common.Customer" autowire="byName" />
在Spring中,支持5種自動佈線模式。
1.no - 根據屬性名自動佈線 - 缺省情況下,自動佈線,通過「裁判」屬性手動設置
2.byName。如果一個bean的名稱與其他bean 屬性的名稱相同,則自動連線它。
3.byType - 按屬性數據類型自動佈線。如果一個bean的數據類型與其他bean屬性的數據類型兼容,則自動連線它。
4.constructor - 構造函數參數中的byType模式。
5.autodetect - 如果找到默認的構造函數,使用「autowired by constructor」;否則,請使用「按類型自動佈線」。
不,您不需要使用默認(無arg)構造函數。如果沒有在bean中定義構造函數會選擇它,如果u希望你可以使用..自動佈線的依賴上你的需求類型
@Qualifier還可以幫助您指定注射
你可以通過@Quanlifier告訴Spring哪些bean應該自動裝配。
package com.midhun.pgm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Customer {
@Autowired
@Qualifier("personA")
private Person person;
//...
}
您是否收到了不正確的實例注入?你問的有什麼不同? – 2014-12-05 09:33:29
不,我對這些陳述感到困惑,我想知道哪一個是對的。 – 2014-12-05 09:34:14
[檢查此鏈接它會幫助你] [1] [1]:http://stackoverflow.com/questions/3153546/how-does-autowiring-work-in-spring – MiDhuN 2014-12-05 09:53:41