多个数据源类型(属性/ JNDI)配置

时间:2015-09-07 12:00:37

标签: java jpa spring-boot

我有一个spring boot项目,可以在独立模式(.jar和tomcat嵌入)或wildfly服务器(.war)上运行。在独立模式下运行时,数据库配置应位于属性文件中。在wildfly中运行时,它从JNDI获取配置。

事实是,当我覆盖工厂bean的bean定义时(我还不知道如果以独立/ wildfly模式运行),我怎样才能回退到原始工厂bean,以便spring boot可以正确加载db config from properties file?

@Configuration
@EnableJpaRepositories("server.repository")
@EntityScan(basePackages = {"server.domain"})
@EnableTransactionManagement
@Import(value = DataSourceAutoConfiguration.class)
public class GeneralDatabaseConfiguration {

    @Value("${spring.jpa.database")
    private String database;

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        if (database == null) {
            //No database in properties file (wildfly mode)
            LocalContainerEntityManagerFactoryBean emfBean = new LocalContainerEntityManagerFactoryBean();
            emfBean.setDataSource(DataSourceLoader.getDataSource());
            emfBean.setPersistenceUnitName("testserver");
            emfBean.setJpaVendorAdapter(jpaVendorAdapter());
            emfBean.setSharedCacheMode(SharedCacheMode.ENABLE_SELECTIVE); // Caches only entities with @Cacheable-Annotation
            emfBean.setValidationMode(ValidationMode.NONE);
            return emfBean;
        } else {
            //Standalone mode - get DB config from file as usual
            return **???**
        }
    }

}

0 个答案:

没有答案
相关问题