从Spring Boot 2.1开始必须启用Bean覆盖,
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release- Notes
Bean覆写
默认情况下禁用Bean覆盖,以防止意外覆盖Bean。如果您依赖覆盖,则需要将spring.main.allow-bean-deFinition- overriding设置为true。
组
spring.main.allow-bean-deFinition-overriding=true
或yml,
spring:
main:
allow-bean-deFinition-overriding: true
再次启用覆盖。
编辑,
Bean覆盖基于Bean的名称而不是其类型。例如
@Bean
public ClassA class(){
return new ClassA();
}
@Bean
public ClassB class(){
return new ClassB();
}
在> 2.1中将导致此错误,默认情况下,bean名称取自方法名称。重命名方法或将name
属性添加到Bean
注释将是有效的解决方案。