我有一個與Spring註釋相關的問題。在我的(學習)項目中,我定義了兩個類,另一個類有兩個屬性,每個屬性都是其中的一個。 爲了生成錯誤,我在XML中定義了兩個相同類類型的bean,並且我在setter方法中使用了@Autowired註釋。事情是這樣的:Spring名稱註釋
<bean id="classA" class="beans.ClassA"></bean>
<bean id="otherclassA" class="beans.ClassA"></bean>
<bean id="classB" class="beans.ClassB"></bean>
public class UpperClass{
private ClassA classA;
private ClassB classB;
@Autowired
public void setClassA(ClassA classA){this.classA = classA}
@Autowired
public void setClassB(ClassB classB){this.classB = classB}
/* .
.
.
*/
}
在主類中,我得到的ApplicationContext這個bean的實例,並打印屬性重寫toString方法,一個簡單的測試內容。 我讀過Spring Autowired註釋按類型查找bean,所以測試應該失敗,因爲定義了兩個ClassA類的bean,但是它起作用。 它也可以使用@Resource註釋而不使用任何名稱。
我正在使用Spring版本4. 我已經將bean的id更改爲與類/ setters名稱不匹配,並且如預期的那樣失敗。
誰能告訴我爲什麼,或者我做錯了什麼? 如果Spring無法通過類型找到bean,Spring是否正在尋找byName?
嘗試更改xml中第一個bean的id並查看會發生什麼。 – Jason
我已經看到,如果更改類而不是bean ID,則必須更改setter參數的名稱以獲取錯誤,您還必須更改setter方法名稱以使其與bean id不匹配。 – jgonzal