假设我有以下类(class):
@Service
public class Foo {
@Autowired
private MySvcClass svc;
}
如果我使用 Spring 的注释初始化,Spring 将遍历它的所有 bean,如果它有一个 MySvcClass
实例,它将注入(inject)它。我不需要知道 MySvcClass
实例的名称,只需知道它是 MySvcClass
的实例即可。
如果我使用 XML 而未利用注释,我如何获得相同的结果?
例如通过 xml def 可能看起来像:
<bean id="foo" class="Foo">
<property name="svc" ref="idOfMySvcClass"/>
</bean>
但这需要我知道 MySvcClass
实例的名称。有没有办法让 Spring 使用与上面相同的逻辑,我只指定类型,Spring 会找到我的实例?
最佳答案
如果您不需要知道 bean 名称,则可以使用“按类型 Autowiring ”。
您的 XML 配置将如下所示:
<bean id="foo" class="com.example.Foo" autowire="byType" />
<bean id="mySvcClass" class="com.example.MySvcClass" />
请注意 Foo 类中的“按类型 Autowiring ”属性。
类定义如下所示:
package com.example;
public class Foo
{
private MySvcClass mySvcClass;
}
关于java - 在 XML 中按类型指定 spring 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25039992/