0

什麼是Spring 3.2的默認自動裝配方法?讓我們說我有這個類Spring 3.2默認值爲@Autowired

public class Saxophonist implements IPerform{ 

    @Override 
    public String perform() { 
     return "I am A Saxophonist and I am Playing The : "+ saxophone; 
    } 

    private Instrument saxophone; 

    public Instrument getSaxophone() { 
     return saxophone; 
    } 

    @Autowired 
    public void setSaxophone(Instrument saxophone) { 
     this.saxophone = saxophone; 
    } 
} 

它會執行byName或將執行byType嗎?

回答

2

默認情況下,自動裝配按類型執行。您可以使用@Qualifier指定自動裝配的名稱。

當容器中存在多個相同類型的bean時,Spring將回退到名稱。因此,如果字段名稱與bean名稱匹配,則將使用相應的bean。

對於回退匹配,bean名稱被視爲默認限定符 的值。因此,您可以使用id「main」而不是 嵌套限定符元素來定義bean,從而得到相同的匹配結果。 但是,雖然您可以使用此慣例以名稱引用特定的 bean,但@Autowired基本上是有關可選語義限定符的類型驅動注入 。這意味着即使使用bean名稱回退,限定符值 也總是在該類型匹配集合內縮小語義 ;它們不會在語義上表示對唯一的bean標識的引用 。好的限定符值是「主要」或「EMEA」或「持久性」,表示特定的 組件的特性,它們獨立於bean id,可能是 在匿名bean定義的情況下自動生成前面的例子是 。

+0

Autowired的後備功能是什麼?以及如何將@Autowired的默認方法設置爲byName而不是byType? – user962206 2013-02-14 10:08:23

+0

@ user962206我更新了回答您的問題 – 2013-02-14 10:14:10

0

按類型。要使其通過名稱連線執行,您必須添加註釋@Qualifier

+0

@Autowired的後備設備是什麼? – user962206 2013-02-14 10:13:18

1

它將通過它的類型執行查找。如果在同一個ApplicationContext中有多個相同類型的bean,則應使用@Qualifier自動裝載所有這些bean的名稱。

0

bean name如果將@Qualifier()添加到setter方法中,則將其視爲默認限定符值。對於more