zoukankan      html  css  js  c++  java
  • 关于 BeanDefinitionOverrideException的解析

      最近在项目开发过程中遇到如下错误:大概就是重名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。

  • 相关阅读:
    团队冲刺0202
    团队冲刺0201
    第十五周
    第十四周博客
    十三周总结
    软件设计模式13
    软件设计模式12
    软件构造4
    软件设计模式11
    软件设计模式10
  • 原文地址:https://www.cnblogs.com/Demrystv/p/13751163.html
Copyright © 2011-2022 走看看