以下示例的行爲與預期不符。我如何自動連線構造函數和屬性?我可以用長袍或魔杖創建我的巫術豆,但不能同時使用(沒有明確的佈線)。如何在Spring中自動連接構造函數和屬性
下面的代碼:
public static class Wizard {
private final Robe robe;
private Wand wand;
public Wizard() { robe = null; }
public Wizard(final Robe robe) { this.robe = robe; }
public void setWand(final Wand wand) { this.wand = wand; }
@Override
public String toString() {
return super.toString() + ", robe = " + robe + ", wand = " + wand;
}
}
public static class Wand { }
public static class Robe { }
這是我常用的bean定義:現在
<bean id="robe" class="org.hoipolloi.Foo.Robe" />
<bean id="wand" class="org.hoipolloi.Foo.Wand" />
,如果我配置嚮導這樣:
<bean id="wizard" class="org.hoipolloi.Foo.Wizard" autowire="byType" />
的長袍是從來沒有填充:
// Prints [email protected], robe = null, wand = [email protected]
System.out.println(ctx.getBean("wizard"));
如果我通過構造切換到自動連線:
<bean id="wizard" class="org.hoipolloi.Foo.Wizard" autowire="constructor" />
然後我的嚮導沒有魔杖:
// Prints [email protected], robe = [email protected], wand = null
System.out.println(ctx.getBean("wizard"));
有沒有什麼辦法自動裝配精靈豆所以他有兩個長袍和魔杖(即構造函數的參數和屬性都是有線的)?
編輯:我應該注意,'byName'的行爲與'byType'相同,即長袍爲空。
您是否嘗試過在您的構造函數和setter上設置@Autowired註解? –
有趣的是,我發現在[Spring XML配置的十二個最佳實踐](http://onjava.com/pub/a/onjava/2006/01/25/spring-xml-configuration)中強烈反對自動裝配投票-best-practices.html) –
@Andreas是的,但那是從2006年開始的。自那以後很多變了! –