首页 > 其他 > 详细

关于 BeanDefinitionOverrideException的解析

时间:2020-09-29 19:45:08      阅读:64      评论:0      收藏:0      [点我收藏+]

  最近在项目开发过程中遇到如下错误:大概就是重名bean的覆盖问题发生报错,百思不得其解。

       技术分享图片

  首先查看了一下 Springboot的源码,截图如下,可以看到  BeanDefinitionOverrideException 在springboot 中没有初始化的默认值,因此即是false,但是可以手动设置 其属性的值。可以在配置文件中进行配置。

  技术分享图片

spring:
  main:
    allow-bean-definition-overriding: true

  然后看了下Spring中的源码,发现BeanDefinitionOverrideException 其默认值为 true,即在spring中允许重名bean的覆盖问题。

  技术分享图片

  

  特此总结如下:

  1) 在spring中如果出现两个同名的bean注册,那么后面注册的bean会覆盖前面注册的bean,并且不会报任何异常,因为spring其是允许bean的重复,这样可以保证项目顺利启动,但是在运行过程中可能会发生错误。

  2) 在Springboot中是不允许重名bean同时注册,因为其默认配置属性是false,因此在项目启动过程中会发生报错BeanDefinitionOverrideException,这样虽然会使得项目启动失败,但是也减少了项目成功启动后在运行过程中排查bug 的时间。

  3)因此,建议在springboot项目中还是不要进行重名bean允许覆盖的配置,并且也不要使用同名bean。

 

关于 BeanDefinitionOverrideException的解析

原文:https://www.cnblogs.com/Demrystv/p/13751163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!