Следующий пример не работает должным образом.Как я могу автоматически связать конструктор И свойства?Я могу создать бин Wizard с помощью мантии или палочки, но не обоими (без явного подключения).
Вот код:
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 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 org.hoipolloi.Foo$Wizard@7c7e7c7e, robe = null, wand = org.hoipolloi.Foo$Wand@72887288
System.out.println(ctx.getBean("wizard"));
Если я переключаюсь на автоматическое подключение через конструктор:
<bean id="wizard" class="org.hoipolloi.Foo.Wizard" autowire="constructor" />
Тогда у моего волшебника нет жезла:
// Prints org.hoipolloi.Foo$Wizard@18381838, robe = org.hoipolloi.Foo$Robe@2cec2cec, wand = null
System.out.println(ctx.getBean("wizard"));
Есть ли какой-нибудь способ автоматического подключения боба-волшебника, чтобы у него были и мантия, и жезл (т.е. оба аргумента и свойства конструкторапроводной)?
РЕДАКТИРОВАТЬ: я должен отметить, что «byName» ведет себя так же, как «byType», т. е. халат ноль.