当前位置: 首页 > 知识库问答 >
问题:

@qualifier不工作

宋铭
2023-03-14

我有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] 

共有1个答案

邵星光
2023-03-14

通过添加@primary注释,使其中一个bean成为主bean。则应识别限定符。

 类似资料:
  • 我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact

  • 另外,为什么autowiring名字不起作用?

  • 我有类,xml配置文件和错误堆栈跟踪像这样。我不知道为什么资格赛不起作用。我看到他甚至什么也没做。 狗 } 测试课程 } Springxml 错误堆栈跟踪 需要帮忙吗

  • 当您创建多个相同类型的bean并且只想使用属性连接其中一个bean时,可能会出现这种情况。 在这种情况下,您可以使用@Qualifier注释和@Autowired通过指定要连接的确切bean来消除混淆。 以下是显示@Qualifier注释使用的示例。 例子 (Example) 让我们有一个可用的Eclipse IDE,并按照以下步骤创建一个Spring应用程序 - 脚步 描述 1 创建一个名为Sp

  • 问题内容: 我有这样的类,xml配置文件和错误堆栈跟踪。我不知道为什么@Qualifier无法正常工作。我看到他甚至什么都不做的错误。 狗 } 考试班 } spring.xml 错误堆栈跟踪 需要帮忙 问题答案: @Qualifier用于通过其名称或ID引用bean。由于无法找到名称或ID为“ small”的xml条目,因此它尝试按类型进行匹配,并找到了两个Size实例。 以下将起作用: 虽然看起

  • 我在试着为Spock中的控制器写一个测试。 应用程序类只是Spring Boot最简单的配置(支持自动扫描)。它提供了一个with PasswordEncryptor。我想用提供模拟的bean替换应用程序中的这个bean。 没有注释,所以Spring不知道应该注入哪个bean。不幸的是,我不知道如何让Spring通过本地配置从应用程序中替换bean。