默认情况下已禁用升级到 spring-boot 2.1.0.M4 Bean 覆盖。如果您依赖覆盖,则需要将 spring.main.allow-bean-definition-overriding 设置为 true。
但是为什么在内部类中定义的 Bean 也被视为重复的 bean 定义。这是一个错误吗?或者这有什么解释?
例如:
@Configuration
public class BusinessLogicConfig {
@Configuration
class BusinessLogicSourceConfig {
@Bean
public BusinessLogic businessLogic() {
return new BusinessLogic("source");
}
}
}
工作正常到 spring-boot 2.0.x
但是当使用例如 spring-boot 2.1.0.M4 时,它在启动时给我一个错误:
The bean 'businessLogic', defined in class path resource [com/example/di/bootconfigs/BusinessLogicConfig$BusinessLogicTier1Config.class], could not be registered.
A bean with that name has already been defined in URL [jar:file:/.../di/build/libs/di-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/example/di/businesslogic/BusinessLogic.class]
and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
由于我显然只有一个 bean 定义(仅在内部 @Configuration 类中定义),这对我来说似乎是一个错误。
大话西游666
相关分类