为了账号安全,请及时绑定邮箱和手机立即绑定

嵌套类 @Configuration @Bean 创建中的 spring Bean

嵌套类 @Configuration @Bean 创建中的 spring Bean

波斯汪 2021-11-11 15:52:15
默认情况下已禁用升级到 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 的第二个版本。


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 261 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信