spring - @Qualifier 无效

标签 spring spring-boot dependency-injection spring-4

我有 3 个数据源,设置如下:

@Configuration
@Component
public class DataSourceConfig {

    @Bean("foo")
    @ConfigurationProperties(prefix = "spring.datasource.foo")
    public DataSource foo() {
        DataSource dataSource = DataSourceBuilder.create().build();
        return dataSource;
    }

    @Bean("bar")
    @ConfigurationProperties(prefix = "spring.datasource.bar")
    public DataSource bar() {
        DataSource dataSource = DataSourceBuilder.create().build();
        return dataSource;
    }

    @Bean("baz")
    @ConfigurationProperties(prefix = "spring.datasource.baz")
    public DataSource baz() {
        DataSource dataSource = DataSourceBuilder.create().build();
        return dataSource;
    }

}

我正在尝试将它们自动连接到我的消费者类中,如下所示:

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyClass {

    @Autowired
    public MyClass(
            @Autowired @Qualifier("foo") DataSource foo,
            @Autowired @Qualifier("bar") DataSource bar,
            @Autowired @Qualifier("baz") DataSource baz
            ) {
        ;
    }

}

当应用程序尝试启动时,出现错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.example.mypackage.MyClass required a single bean, but 3 were found:
    - foo: defined by method 'foo' in class path resource [com/example/DataSourceConfig.class]
    - bar: defined by method 'bar' in class path resource [com/example/DataSourceConfig.class]
    - baz: defined by method 'baz' in class path resource [com/example/DataSourceConfig.class] 

为什么 @Qualifier 不起作用?

我正在使用 Spring Boot 1.5.6.RELEASE

最佳答案

通过添加 @Primary 注释使其中一个 bean 成为主要 bean。然后应该识别限定词。

关于spring - @Qualifier 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578689/

相关文章:

java - 在 spring java 配置中注册 groovy bean

java - 如何在 Spring Boot 中正确连接表

mysql - Spring中@Scheduled的使用

java - 将消息从 ServiceActivator 传递到新的 InboundChannelAdapter

c# - 什么依赖注入(inject)框架与 WebForms

go - 在同一命名空间中连线生成具有相同名称的第二个函数

java - 创建名称为 'application' 的 bean 时出错,未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException

java - 模块化网络应用程序

java - 配置 Spring Security 以使用自定义 UsernamePasswordAuthenticationFilter

Spring异常处理-如何同时使用ExceptionResolver和@ExceptionHandler