java - 在 XML 中按类型指定 spring 引用

标签 java spring spring-bean

假设我有以下类(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/

相关文章:

java - Selenium IDE - Javascript 警报,按 Enter,要使用哪个目标?

java - JOOQ API getPrimaryKey() 对每个表返回 null?

java - RabbitMQ Spring AMQP - 一段时间后的消息处理

java - Spring 覆盖 bean 配置设置其 "Primary"一个

java - 使用 spring bean xml 初始化自定义内部对象

java - 无法 Autowiring 。找不到 'MessagingPropertiesRefactor' 类型的 bean

java - 使用 Spring MVC Web 应用程序强制以 html 形式进行 UTF8 编码

java - 使用 CompletableFuture.runAsync() 与 ForkJoinPool.execute()

Spring data jpa存储库内存中测试用例

java - Oauth2/密码流/检查特定实体的权限