У меня проблема, мне нужно создать два DataSource
, но я не могу использовать @Primary
, потому что в другом модуле у меня также есть два DataSource
, а затем в третьем модуле я включаю оба модуля, поэтому есть два основных модуля.
Я хотел использовать @Qualifier
, но он не работает.
@Bean(name = "secondDataSourceProperties")
@ConfigurationProperties("second")
public DataSourceProperties secondDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "secondDataSource")
@ConfigurationProperties("second.configuration")
public DataSource secondDataSource(@Qualifier("secondDataSourceProperties") DataSourceProperties dataSourceProperties) {
HikariDataSource ds = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
ds.setConnectionTestQuery("SELECT 1");
ds.setConnectionInitSql("SELECT 1");
ds.setPoolName("jdbc/second");
return ds;
}
@Bean(name = "secondTransactionManager")
public DataSourceTransactionManager secondDataSourceTransactionManager(@Qualifier("secondDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
@ConfigurationProperties("first")
public DataSourceProperties firstDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "firstDataSource")
@ConfigurationProperties("first.configuration")
public DataSource firstDataSource(@Qualifier("firstDataSourceProperties") DataSourceProperties dataSourceProperties) {
HikariDataSource ds = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
ds.setConnectionTestQuery("SELECT 1");
ds.setConnectionInitSql("SELECT 1");
ds.setPoolName("jdbc/first");
return ds;
}
@Bean(name = "firstTransactionManager")
public DataSourceTransactionManager firstDataSourceTransactionManager(@Qualifier("firstDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
Ошибка, которую я получаю:
Нет подходящего компонента типаДоступно 'org.springframework.boot.autoconfigure.jdbc.DataSourceProperties': ожидаемый единый соответствующий бин, но найдено 5: secondDataSourceProperties, firstDataSourceProperties, 3DataSourceProperties, 4DataSourceProperties, spring.datasource-org.springframeProconset.ар.1014 *
Я использую DataSource
, например, в коде:
@Autowired
@Qualifier("first")
private DataSource dataSource;
и
@Transactional(value = "firstTransactionManager")