异常错误如下:
The bean 'dubboBootstrapApplicationListener' could not be registered. A bean with that name has already been defined and overriding is disabled.
版本:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.5</version>
</dependency>
产生原因是dubbo启动流程重复注入dubboBootstrapApplicationListener 到beanDefinedMap中,其中注入的地方有两个:
1、ServiceAnnotationBeanPostProcessor
2、DubboLifecycleComponentRegistrar(@EnableDubbo 中的 @EnableDubboLifecycle加入)
解决版本有两个:
1、在application.yml中添加
spring:
main:
allow-bean-definition-overriding: true
2、把包升级,添加如下jar,不要用默认的1.0.5
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>1.0.6</version>
</dependency>
这个升级主要调整了 AnnotatedBeanDefinitionRegistryUtils.registerBeans方法