多个Spring Boot数据源为Regular和JNDI,基于Env

时间:2016-06-15 02:10:51

标签: spring spring-boot spring-jdbc jdbctemplate

在我的SpringBoot应用程序中,我需要支持两个数据源。是否可以让我的DatabaseConfig类在我的本地环境中支持常规数据源,但是在其他环境中它是否可以作为JNDI数据源使用?其他数据源将始终是所有环境中的常规数据源。

@Configuration 
public class DatabaseConfig { 

    @Primary 
    @ConfigurationProperties(prefix = "spring.firstDatasource") 
    @Bean(name = "firstDatasource") 
    public DataSource contentDatasource() { 
            return DataSourceBuilder.create().build(); 
    } 

    @ConfigurationProperties(prefix = "spring.secondDatasource") 
    @Bean(name = "secondDatasource") 
    public DataSource secondDatasource() { 
            return DataSourceBuilder.create().build(); 
    } 

    @Bean(name = "jdbcFirst") 
    public JdbcTemplate firstJdbcTemplate(DataSource firstDatasource)   { 
            return new JdbcTemplate(firstDatasource()); 
    } 

    @Bean(name = "jdbcSecond") 
    public JdbcTemplate secondJdbcTemplate(DataSource secondDatasource) { 
            return new JdbcTemplate(secondDatasource()); 
    } 
}

谢谢!

1 个答案:

答案 0 :(得分:1)

可以看一下@Profile注释。您可以将其与@Bean@Component结合使用(也适用于@Service,...)或@Configuration等儿童注释。

查看this Spring docs section以了解如何使用它。

查看this Spring Boot docs section以研究如何为Spring Boot应用程序定义配置文件。通过命令行定义配置文件被认为是最佳选择。