1

假设我有以下课程:

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

4

2 回答 2

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;

}
于 2014-07-30T17:11:54.317 回答
2

将 autowire="byType" 属性添加到 xml 中的 bean 元素。

于 2014-07-30T14:56:48.557 回答