说我有以下课程:
@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;
}