关于同名bean的注册问题,spring和springboot有着不同的处理方式:
- spring中如果出现两个同名的bean在注册的时候,并不会报出任何的异常,而是后一个注册的bean会将之前注册的bean覆盖掉,这在启动的时候是没有任何问题的;但是在实际运行的过程中可能会发生错误,这时如果想再去弥补,就会发现很难找到这个错误的所在。
- 但是springboot中并不是如此,springboot中如果出现重名的bean,并不会出现覆盖的问题,而是在启动过程中,注册时候直接报出BeanDefinitionOverrideException,名称重复异常,可以说是将bug扼杀在摇篮中。
具体的原因是什么呢?
那就不得不提这个配置:
spring.main.allow-bean-definition-overriding
如果这个配置为true,表示后发现的bean会覆盖之前相同名称的bean,这个时候就会发生覆盖问题;如果设置为false,那么就不会发生覆盖,避免掉了潜在的问题。
具体的详情可以参考本篇文章
 ;⬇