[英]Spring Framework JDBC use two data sources
這是數據源配置。 具有兩個數據源的文件。 我想在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
批注來實現。
假設您想將兩個jdbcTemplates
都注入一個特定的類中
@Repository
public class MyDao extends JdbcDaoSupport {
@Autowired
public MyDao(@Qualifier("jdbcTemplate") JdbcTemplate jdbcTemplate,
@Qualifier("jdbcTemplateSecond") JdbcTemplate jdbcTemplateSecond) {
//code
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.