【发布时间】:2017-07-30 07:43:30
【问题描述】:
我跟着this tutorial 用Java 配置了一个Spring Batch 作业。它通过使用由每个数据源实现的接口来提供多个数据源。
这是我目前所拥有的:
InfrastructureConfig.java
public interface InfrastructureConfiguration {
@Bean
DataSource dataSource();
}
MySQLConfig.java
@Configuration
@Primary
public class MySQLConfiguration implements InfrastructureConfiguration {
@Bean
public DataSource dataSource() {
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/employees?useSSL=false");
dataSource.setUsername("testing");
dataSource.setPassword("testing");
return dataSource;
}
}
PostgreSQLConfig.java
@Configuration
public class PostgreSQLConfiguration implements InfrastructureConfiguration {
@Bean
public DataSource dataSource() {
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://localhost:5432/postgres");
dataSource.setUsername("postgres");
dataSource.setPassword("testing");
return dataSource;
}
}
JobConfig.java
@Configuration
public class JobConfig {
@Autowired
private InfrastructureConfig infrastructureConfig
....
}
通过对我的 MySQLConfig 使用 @Primary 注释,我希望使用 mySQLConfig bean。相反,我得到了这个:
它使用 postgreSQLConfig bean 覆盖 mySQLConfig bean,因此使用 postgresql 驱动程序。问题是,为什么?
【问题讨论】:
标签: java spring spring-boot spring-batch