这是数据源conf。具有两个数据源的文件。我想在 DAO 类中使用它们,但现在只有第一个数据源正在工作。我怎样才能同时使用它们?可能它们必须在 dao 类的构造函数中设置或与 getJdbcTemplate()
重用public class DataSourceConfig {
// datasource
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://url");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
@Bean
public DataSource dataSourceSecond() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://url");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
// set jdbc template
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource());
}
@Bean
public JdbcTemplate jdbcTemplateSecond() {
return new JdbcTemplate(dataSourceSecond());
}
// transaction manager
@Bean
public DataSourceTransactionManager dataSourceTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public TransactionTemplate transactionTemplate() {
return new TransactionTemplate(dataSourceTransactionManager());
}
}
道
@Repository
public class UsersDao extends JdbcDaoSupport {
@Autowired
private MessageSourceAccessor msa;
@Autowired
public UsersDao(JdbcTemplate jdbcTemplate) {
setJdbcTemplate(jdbcTemplate);
}
public void deleteUser(int userId) {
String sql = msa.getMessage("sql");
Object[] args = new Object[] { userId };
getJdbcTemplate().update(sql, args);
}
}
最佳答案
您可以使用@Qualifier
注释来做到这一点。
假设您想在特定类中注入(inject)jdbcTemplates
@Repository
public class MyDao extends JdbcDaoSupport {
@Autowired
public MyDao(@Qualifier("jdbcTemplate") JdbcTemplate jdbcTemplate,
@Qualifier("jdbcTemplateSecond") JdbcTemplate jdbcTemplateSecond) {
//code
}
}
关于java - Spring框架JDBC使用两个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549190/