繁体   English   中英

春季启动自动配置包括

[英]spring boot autoconfiguration include

有没有办法包含基于配置文件的自动配置? (如果有spring.autonfigure.include ,那就太好了)

我想连接到H2数据库进行测试和本地开发。 为了便于开发,我希望自动配置DataSourceAutoConfiguration.classHibernateJpaAutoConfiguration.classDataSourceTransactionManagerAutoConfiguration.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM