默认情况下已禁用升级到 spring-boot 2.1.0.M4 Bean 覆盖。如果您依赖覆盖,则需要将 spring.main.allow-bean-definition-overriding 设置为 true。但是为什么在内部类中定义的 Bean 也被视为重复的 bean 定义。这是一个错误吗?或者这有什么解释?例如:@Configurationpublic 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 类中定义),这对我来说似乎是一个错误。
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
原来它不是@Configuration 类嵌套。它是 BusinessLogic 类本身,它是一个名为 BusinessLogic 的 Bean,因为它是一个 @Component。所以上面创建了一个名为 BusinessLogic 的 Bean 的第二个版本。
添加回答
举报
0/150
提交
取消