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。

  • 相关阅读:
    javascript封装与多态的体现
    js事件处理、事件对象
    对js中this的一点点理解
    js中的位运算
    css中的各种单位简述以及ios10下safari禁止缩放的问题
    js变量提升
    Web Worker javascript多线程编程(一)
    MongoDB数据库备份和恢复
    什么是Git及Git的诞生
    MongoDB安装过程
  • 原文地址:https://www.cnblogs.com/Demrystv/p/13751163.html
Copyright © 2011-2022 走看看