【发布时间】:2016-04-20 00:19:52
【问题描述】:
我的项目中有以下依赖项,并且我的主类中有 @SpringBootApplication
spring-boot-starter-data-jpa
有没有什么方法可以仅在存在 Env 属性/系统属性时有条件地启用 Spring Boot 数据源自动配置类。
谢谢
【问题讨论】:
标签: spring-boot
我的项目中有以下依赖项,并且我的主类中有 @SpringBootApplication
spring-boot-starter-data-jpa
有没有什么方法可以仅在存在 Env 属性/系统属性时有条件地启用 Spring Boot 数据源自动配置类。
谢谢
【问题讨论】:
标签: spring-boot
用注解@ConditionalOnProperty 扩展DataSourceAutoConfiguration 怎么样?您可以从 spring 中排除原始的 DataSourceAutoConfiguration 并将您自己的实现作为应用程序的一部分。比如,
@Configuration
@ConditiaonalOnProperty(value = "datasource.property.anything",matccchIfMissing==true)
public class DataSourceInit extends DataSourceAutoConfiguartion {
}
在你的 spring 应用程序类中添加 exclude 为:
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
【讨论】:
DataSourceAutoConfiguration的情况下,排除全部肯定没问题。如果您的datasource.property.anything 设置为false,会发生什么故障?根据我的经验,@ConditionalOnProperty 将决定是否应该加载类 HibernateJpaAutoConfiguration。否则,请将您的项目发布到 github 还是直接邮寄给我?我想对它做更多的研究。如果我实现了,我将发布任何有用的信息。
您可以使用spring.autoconfigure.exclude 属性排除自动配置。您可以使用系统属性设置该属性:
-Dspring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
您也可以使用SPRING_AUTOCONFIGURE_EXCLUDE 环境变量来设置它。
【讨论】: