здесь некоторый код из поста здесь, что бы объяснить мой вопрос:Spring 3 Dependency Injection и интерфейсы
Интерфейс:
package org.better.place
public interface SuperDuperInterface{
public void saveWorld();
}
реализации:
package org.better.place
import org.springframework.stereotype
public class SuperDuperClass implements SuperDuperInterface{
public void saveWorld(){
System.out.println("Done");
}
}
Клиент:
package org.better.place
import org.springframework.beans.factory.annotation.Autowire;
public class SuperDuperService{
private SuperDuperInterface superDuper;
public void doIt(){
superDuper.saveWorld();
}
public void setSuperDuper(SuperDuperInterface superDuper) {
this.superDuper = superDuper;
}
}
Мой вопрос - как я могу настроить компоненты в конфигурации весны? Я не хочу использовать @Autowired
и другие аннотации.
Я предполагаю, что это будет что-то вроде этого:
<bean id="superService" class="org.better.place.SuperDuperService">
<property name="superDuper" ref="superWorker"
</bean>
<bean id="superWorker" class=?????? parent=???????? >
</bean>
Я не вижу, что бы сделать Spring автоматически впрыскивать экземпляр 'SuperDuperClass' в' SuperDuperService' без использования '@Autowired 'в нем (чего OP хочет избежать). – zagyi
, если вы явно не говорите @Autowired или упоминаете авто-провод в xml-источнике, не авто-провод. То, что я попытался объяснить здесь, заключается в том, чтобы избежать родительского тега, причина весны выяснит, может ли он назначить экземпляр или нет. – sanbhat
Да, вот что я имею в виду. Ни один из них не находится в фрагменте кода в вопросе, поэтому не понимаю, почему вы написали, что «Spring автоматически найдет, может ли он назначить экземпляр SuperDuperClass в поле superDuper в SuperDuperService» – zagyi