spring-boot之从 2.0.6 升级到 Spring Boot 2.1.2 会导致存储库错误
我尝试将工作应用程序从 Spring Boot 2.0.6 升级到 2.1.2。在此更改之后,我在测试中遇到了一些麻烦,但最终解决了这个问题。我可以从 NetBeans (mvn clean install) 成功构建应用程序。但是,当我尝试使用 mvn spring-boot:run 从命令行运行时,我得到的是:
APPLICATION FAILED TO START
Description:
The bean 'xxxRepository', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
有趣的是,每次我尝试运行它时,错误都在不同的存储库中,但总是显示相同的消息。
这似乎与 this change 有关:
Bean Overriding
Bean overriding has been disabled by default to prevent a bean being accidentally overridden. If you are relying on overriding, you will need to set spring.main.allow-bean-definition-overriding to true.
鉴于它显然影响了我所有的存储库,我猜测某处存在配置问题。我可以按照建议的操作进行操作,但实际上并没有什么不同。问题是我不知道要更改配置以使其再次正常工作。我什至不确定要发布与该问题相关的内容。关于如何解决这个问题的任何想法?
请您参考如下方法:
我们从 Spring Boot 2.0.x 升级到 2.1.x 时遇到了这个问题。
我可以通过允许使用 spring.main.allow-bean-definition-overriding: true 覆盖 bean 定义来“解决”这个问题。但感觉像是隐藏了根本原因。
事实上,bean 定义覆盖曾经用来隐藏我们这边的糟糕配置。
在检查了我们的 @Configuration 之后我们使用 @ComponentScan 两次扫描包含我们存储库的包的类和 @EnableJpaRepository在来自不同类的相同包上:一次使用过滤器 @ComponentScan.Filter ,一次没有。
删除第二个组件扫描解决了这个问题。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



