一尘不染

在Spring Boot中禁用所有与数据库相关的自动配置

spring

我正在使用Spring Boot开发两个应用程序,一个用作服务器,另一个用作客户端应用程序。但是,它们都是同一个应用程序,基于活动配置文件的功能有所不同。我正在使用Spring Boot的自动配置功能来配置我的应用程序。

我想在客户端应用程序上禁用所有与数据库相关的自动配置,因为它不需要数据库连接。应用程序不应尝试与数据库建立连接,也不应尝试使用任何Spring Data或Hibernate功能。启用或禁用数据库自​​动配置应该是有条件的,并且应基于应用程序的活动配置文件。

我可以通过为各自的配置文件创建两个不同的application.properties文件来实现此目的吗?

我尝试将其添加到属性文件中,

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration\
  org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration\
  org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration

但是,该应用程序仍然尝试在启动时连接到数据库。这些排除条件足以满足我的要求吗?


阅读 906

收藏
2020-04-12

共2个答案

一尘不染

我做类似事情的方式是:

@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
@Profile ("client_app_profile_name")
public class ClientAppConfiguration {
    //it can be left blank
}

为服务器应用程序编写类似的内容(不排除)。

最后一步是从主spring引导类禁用Auto Configuration:

@SpringBootApplication
public class SomeApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SomeApplication.class);
    }

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SomeApplication.class);
    }
}

更改@SpringBootApplication为:

@Configuration 
@ComponentScan
2020-04-12
一尘不染

要禁用所有与数据库相关的自动配置,并从以下位置退出:

无法确定数据库类型NONE的嵌入式数据库驱动程序类

1.使用注释:

@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(PayPalApplication.class, args);
    }
}

2.使用Application.properties:

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
2020-04-12