java - Spring框架JDBC使用两个数据源

标签 java spring jdbc

这是数据源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/

相关文章:

java - 使用 Mockito 在注入(inject)的服务类中注入(inject)对象

java - 在 Spring MVC 中,使用 'redirect:process' 或 'redirect:/process' 在导致丢失 session 或 session 值方面是否有所不同?

spring - 我如何在 spring 应用程序中配置 ssl 工件?

java - com.mysql.jdbc.exceptions.jdbc4.MysqlSyntaxErrorException :Access denied for user "@' local host' to database 'mysql'

java - Togglz JDBCStateRepository 自动在 DB2 中创建格式错误的表

java - 准备好的声明有问题

java - 我用maven构建的ear没有生成它的APP-INF/lib

java - Android:无法从扩展Thread的类中调用新 Activity

java - 了解 Scatter Gather 的企业集成?

java - 使用 Eclipse 资源过滤器