多个 Spring 引导数据源作为常规和基于 Env 的 JNDI

Multiple Spring Boot datasources as Regular and JNDI based on Env

在我的 SpringBoot 应用程序中,我需要支持两个数据源。是否可以让我的 DatabaseConfig class 在我的本地环境中支持常规数据源,但让它在我的其他环境中作为 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()); 
    } 
}

谢谢!

有可能,看看@Profile注解。您可以将它与 @Bean@Component(也适用于子注释,如 @Service、...)或 @Configuration.

结合使用

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

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