数据源 Bean 在 Spring boot 2.1 中重写
我已经升级到spring boot 2.1版本,并且在启动应用程序时遇到了奇怪的异常。
在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class] 中定义的 Bean'dataSource' 无法注册。具有该名称的Bean已经在类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义,并且覆盖被禁用。
完整的错误消息是:
[o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext] 在上下文初始化期间遇到的异常 - 取消刷新尝试:org.springframework.beans.factory.support.BeanDefinitionOverrideException:在类路径资源中定义的Bean定义中定义的Bean定义无效的Bean定义[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]:无法注册Bean定义[根bean:类[org.springframework.aop.scope.ScopedProxyFactoryBean];范围 =;抽象=假;lazyInit=false;自动线模式 = 0;依赖性检查= 0;自动线候选 = 真;主要 = 假;factoryBeanName=null;工厂方法名称 =空;initMethodName=null;destroyMethodName=null;在 BeanDefinition 中定义的类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]] for bean 'dataSource': There 已经有 [Root Bean: class [null]; scope=refresh; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=false; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari; factoryMethodName=dataSource; initMethodName=null; destroyMethodName=(推断);在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]] 绑定中定义。
根据我们的政策,不得覆盖 Bean,并且会禁用:
spring.main.allow-bean-definition-overriding=false
我的应用程序代码中没有任何数据源配置。触发此错误的唯一选项是,在我的应用程序属性中,我已将数据源类型设置为:@EnableAutoConfiguration
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
引导应用程序初始化为
@SpringBootApplication
@EnableAutoConfiguration
public class MyApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
new MyApplication()
.configure(new SpringApplicationBuilder(MyApplication.class))
.run(args);
}
}
还有一个配置类可以导入各种其他配置:
@Configuration
@ImportResource(locations = {
"classpath*:conf/spring/*.xml",
"classpath*:conf/spring/core/*.xml",
"classpath*:conf/spring/plugin/**/*.xml"
})
@EnableAsync
@EnableRetry
@EnableCaching
@EnableBatchProcessing
@EnableCircuitBreaker
public class AppConfig {
...
}
有谁知道可能导致该问题的原因以及在哪里搜索?
这在Spring Boot 2.1(即2.0.5)之前没有发生过。