【发布时间】:2018-08-06 12:56:20
【问题描述】:
我正在尝试创建多个数据源。这就是我的配置类中的内容:如果我注释 @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);
}
我在控制台中看到以下内容:
考虑将其中一个 bean 标记为 @Primary,更新消费者 接受多个bean,或使用@Qualifier 来识别bean 应该吃掉的
【问题讨论】:
-
您的代码看起来不错,顺便说一句,您确定 Qualifier 导入正确吗?
-
你已经声明了两个 jdbctemplate bean。为它们添加@Qualifier。然后你有任何自动配置器bean(可能来自spring)试图使用数据源bean,附加完整的堆栈跟踪
标签: spring spring-boot datasource