Spring Boot 1.4.0如何指定DataSourcePoolMetadataProvidersConfiguration配置
Spring Boot 1.4 数据源元数据提供配置加载规则调整方案
加载逻辑说明
DataSourcePoolMetadataProvidersConfiguration下的各数据源元数据提供配置类,默认仅通过@ConditionalOnClass判断类路径下是否存在对应数据源的类,不会校验当前项目实际使用的数据源类型。只要你的项目类路径下同时存在Commons DBCP和Tomcat JDBC的依赖包,两个配置类就会同时生效,该逻辑为Spring Boot 1.4版本的默认设计,本身不会影响正常运行:容器中所有元数据提供类会按顺序匹配当前实际使用的DataSource类型,只有适配Tomcat数据源的提供类会被真正调用。
禁用CommonsDbcp元数据配置的两种方式
如果需要完全禁止CommonsDbcp相关元数据配置加载,可选择以下任意一种方案:
- 方案1:排除指定自动配置类
可以通过注解或者配置文件两种方式排除不需要的配置:- 注解方式:在启动类的
@EnableAutoConfiguration或@SpringBootApplication注解中添加排除规则:@SpringBootApplication(exclude = CommonsDbcpPoolDataSourceMetadataProviderConfiguration.class) - 配置文件方式:在application.properties/application.yml中添加自动配置排除规则:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.metadata.CommonsDbcpPoolDataSourceMetadataProviderConfiguration
- 注解方式:在启动类的
- 方案2:移除不必要的依赖
如果项目中完全不需要使用Commons DBCP数据源,直接从依赖管理中移除commons-dbcp相关jar包即可。该配置类触发的前提是类路径下存在org.apache.commons.dbcp.BasicDataSource类,移除对应依赖后该配置自然不会生效。
内容的提问来源于stack exchange,提问作者bk17
相关产品推荐
相关产品推荐

