Я только что обновил свое приложение с Spring Boot 1.5.9 до 2.1.3. У нас есть 2 базы данных, одна не защищенная, а другая - защищенная. При попытке запустить приложение я получаю следующую ошибку:
┌─────┐
| shardedDataSource defined in class path resource [com/config/ShardedDataSourceConfig.class]
↑ ↓
| globalNamedParameterJdbcTemplate defined in class path resource [com/config/GlobalDataSourceConfig.class]
↑ ↓
| globalJdbcTemplate defined in class path resource [com/config/GlobalDataSourceConfig.class]
↑ ↓
| global defined in class path resource [com/config/GlobalDataSourceConfig.class]
↑ ↓
| org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker
└─────┘
В GlobalDataSourceConfig у меня есть следующие Beans
@Bean(name = "global")
public DataSource globalDataSource() {
return new HikariDataSource(this);
}
@Bean(name = "globalJdbcTemplate")
public JdbcTemplate globalJdbcTemplate() {
return new JdbcTemplate(globalDataSource());
}
@Bean(name="globalNamedParameterJdbcTemplate")
public NamedParameterJdbcTemplate globalNamedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(globalJdbcTemplate());
}
И для shardedDataSource в классе ShardedDataSourceConfig у меня есть
@Primary @Bean @Profile("!test")
public DataSource shardedDataSource(@Qualifier("globalNamedParameterJdbcTemplate") NamedParameterJdbcTemplate jdbcTemplate) {
Кто-нибудь может дать мне представление, почему это происходит?
До обновления этого не происходило.
Я обнаружил похожую проблему, но решение для SpringBoot 2 не работает
https://github.com/spring-projects/spring-boot/issues/9394