说我有以下课程:

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

最佳答案

如果您不必知道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;

}

07-24 22:15