在XML中按类型指定spring引用

时间:2014-07-30 14:51:41

标签: java spring spring-bean

说我有以下课程:

@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会找到我的实例?

2 个答案:

答案 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元素。