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

Spring Boot@qualifier本身不起作用

孟栋
2023-03-14

我正在尝试创建多个数据源。这就是我在配置类中的内容:如果我注释@primary注释,它将引发一个异常,并且应用程序没有启动,为什么@qualifier单独不能工作?为什么它坚持将其中一个数据源作为主要数据源?

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

@Bean
@ConfigurationProperties(prefix="spring.secondDatasource")
public DataSource sDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean
public JdbcTemplate jdbcTemplateOne(@Qualifier("fDataSource") DataSource ds) {
    return new JdbcTemplate(ds);
}

@Bean
public JdbcTemplate jdbcTemplateTwo(@Qualifier("sDataSource") DataSource ds ) {
    return new JdbcTemplate(ds);
}

共有1个答案

穆鸿飞
2023-03-14

因为自动配置。Spring(特别是spring-boot)旨在使配置在非常常见的情况下变得容易。在大多数情况下,您只需要一个数据源,或者其中一个数据源是main(primary)。数据源的自动配置依赖于此假设。

如果您有特殊的配置(或不是非常常见的)需求,您需要手动进行这些配置,并且可能不使用“Spring-Boot”。但这种方式很复杂。您可以在spring文档中更进一步。

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

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

  • 我有3个数据源,我设置如下: 我正在尝试将它们自动加入到我的消费者阶层中,如下所示:

  • 问题内容: 我无法在注解中使用方法。也给。我想念什么?虽然效果很好。 我正在从数据库向用户分配权限。 问题答案: 你必须命名前缀你的权威来使用,看到Spring Security的参考 : HttpServletRequest.isUserInRole(String)将确定是否包含具有传递给的角色。通常,用户不应将“ ROLE_”前缀传递给此方法,因为它是自动添加的。例如,如果要确定当前用户是否具

  • 我的springboot版本是2.3.7。我知道spring boot starter验证不是spring boot starter web的可传递依赖项。但即使单独添加了它,我的注释也不起作用。 //下面的依赖我已经添加build.gradle编译'org.springframework.boot: spring-boot-starter-validation' //我希望在请求时出错的示例类

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