有没有一种方法可以包含基于配置文件的自动配置? (这将是很好,如果有spring.autonfigure.include
)弹簧引导自动配置包括
我想连接到一个h2数据库进行测试和本地开发。为了便于开发,我希望DataSourceAutoConfiguration.class
,HibernateJpaAutoConfiguration.class
和DataSourceTransactionManagerAutoConfiguration.class
自动配置。但是,我希望能够轻松切换到在应用程序服务器中定义并在Configuration类中配置的Oracle数据库。当切换到Oracle数据库,我需要排除上述自动配置类:
// This only works for the oracle database - need to include autoconfig
// classes for h2 database
@SpringBootApplication(
exclude = {
DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class },
scanBasePackages = {
"foo.bar"
})
我有一个“H2”配置文件配置H2数据库和其他几个配置文件中,我想活数据库(本地,开发,测试,质量,产品)。我可以在每个实时数据库配置文件上使用spring.autoconfigure.exclude
属性,但有时我想在本地“实时”和h2数据库之间切换。我也可以弄清楚被排除的自动配置类正在做什么,并在“h2”配置文件中手动配置,但我宁愿不重复努力。
任何人都有如何完成这个想法?
您是否尝试过分离@ @ SpringBootApplication'并使用'@ Profile'注释了特定配置?你知道只要改变'spring.datasource.url'应该做你需要的吗? – chrylis
为什么在连接到oracle时需要禁用自动配置?只需提供一个'application-prod.properties'并在那里配置Oracle数据源。另外,如果您提供自己的实例,则不需要排除自动配置,Spring Boot足够智能以检测“DataSource”的存在并对其执行操作。但正如所说的,只是创建一个不同的'application.properties',并让spring启动根据配置文件决定加载哪一个。 –
我能够分离'@ SpringBootApplication'并使其正常工作。应用程序服务器(JBoss)配置数据源,因此我必须通过配置类来配置数据源。我需要禁用事务管理,因为我需要在连接到oracle时使用JBoss。 – greggnic