gpt4 book ai didi

java - Spring Boot自动配置包括

转载 作者:行者123 更新时间:2023-12-02 04:20:35 25 4
gpt4 key购买 nike

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

我想连接到 h2 数据库进行测试和本地开发。为了便于开发,我希望自动配置 DataSourceAutoConfiguration.classHibernateJpaAutoConfiguration.classDataSourceTransactionManagerAutoConfiguration.class。但是,我希望能够轻松切换到在应用程序服务器中定义并在配置类中配置的 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 {

}

关于java - Spring Boot自动配置包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44529984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com