簡體   English   中英

Spring Framework JDBC使用兩個數據源

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM