Java Spring3依赖注入和接口
下面是一篇文章中的一些代码,可以解释我的问题: 接口:Java Spring3依赖注入和接口,java,spring,configuration,dependency-injection,Java,Spring,Configuration,Dependency Injection,下面是一篇文章中的一些代码,可以解释我的问题: 接口: package org.better.place public interface SuperDuperInterface{ public void saveWorld(); } 实施: package org.better.place import org.springframework.stereotype public class SuperDuperClass implements SuperDuperInterfa
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;
}
}
我的问题是-如何在spring配置中配置bean?我不想使用@Autowired
和其他注释
我猜是这样的:
<bean id="superService" class="org.better.place.SuperDuperService">
<property name="superDuper" ref="superWorker"
</bean>
<bean id="superWorker" class=?????? parent=???????? >
</bean>
当然,您必须实例化实现类:
<bean id="superWorker" class="org.better.place.SuperDuperClass"/>
这将导致两个实例的prop1
和prop2
的值相同,但prop3
的值不同,您只需给出实现类的完全限定名,而不需要给出parent
属性。Spring将自动查找是否可以将SuperDuperClass
的实例分配给SuperDuperService
的superDuper
字段
<bean id="superWorker" class="org.better.place.SuperDuperClass" >
</bean>
我看不出是什么让Spring在不使用@Autowired
的情况下自动将SuperDuperClass
实例注入到SuperDuperService
中(OP希望避免)。除非您在xml中明确地说@Autowired或提到autowire,否则Spring不会自动连接。我试图在这里解释的是避免使用parent标记,因为spring将发现它是否可以分配实例,这就是我的意思。它们都不在问题的代码段中,所以我不明白为什么您会写“Spring会自动找到是否可以将SuperDuperClass的实例分配给SuperDuperService的superDuper字段”
<bean id="superWorker" class="org.better.place.SuperDuperClass" >
</bean>