我有一个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 **???**
}
}
}