[英]spring boot autoconfiguration include
有没有办法包含基于配置文件的自动配置? (如果有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
批注并提供特定的@EnableAutoConfiguration
批注来使其工作。
@Configuration
@ComponentScan(basePackages = {"foo.bar"})
@EnableTransactionManagement
@EnableConfigurationProperties
public class App extends SpringBootServletInitializer {
public static void main(String... args) throws Exception {
SpringApplication.run(App.class, args);
}
}
对于h2数据库,我启用“ h2”配置文件并使用此类:
@Profile("h2")
@Configuration
@EnableAutoConfiguration
public class H2Config {
@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
registration.addUrlMappings("/console/*");
return registration;
}
}
对于“实时” oracle数据库,我禁用“ h2”配置文件并使用此类:
@Profile("!h2")
@Configuration
@EnableAutoConfiguration(exclude = {
DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class })
public class NonH2Config {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.