说我有以下课程:
@Service
public class Foo {
@Autowired
private MySvcClass svc;
}
如果我使用Spring的注释初始化,Spring将迭代它的所有bean,如果它有一个MySvcClass
的实例,它将注入它。我不需要知道MySvcClass
实例的名称,只是它是MySvcClass
的实例。
如果我使用XML而不是利用注释,如何获得相同的结果?
例如,xml def看起来像:
<bean id="foo" class="Foo">
<property name="svc" ref="idOfMySvcClass"/>
</bean>
但是这需要我知道MySvcClass
实例的名称。有没有办法让Spring使用与上面相同的逻辑,我只指定类型,Spring会找到我的实例?
答案 0 :(得分:3)
如果您不需要知道bean名称,可以使用'按类型自动装配'。
您的XML配置如下所示:
<bean id="foo" class="com.example.Foo" autowire="byType" />
<bean id="mySvcClass" class="com.example.MySvcClass" />
请注意Foo类中的“按类型自动装配”属性。
类定义如下所示:
package com.example;
public class Foo
{
private MySvcClass mySvcClass;
}
答案 1 :(得分:2)
添加autowire =&#34; byType&#34;属性为xml中的bean元素。