Duplicate spring bean id
问题背景:从本地调用服务器的dubbo接口进行测试
实现思路:基于IDEA+Spring+maven+Dubbo搭建测试项目,从本地直接调用
具体实现思路可参考博客:https://www.cnblogs.com/xiuxingzhe/p/9250737.html
碰到问题:引入测试目标jar后,调用其接口运行测试类时,报错如下
Caused by: java.lang.IllegalStateException: Duplicate spring bean id cfgDistributorServiceImplat com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:106)at com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:77)at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:168)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:138)at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
调查思路:
1.检查项目中spring是否加载了两个一样的配置文件或者相同的dubbo配置
spring对于id的重复,默认的处理策略是覆盖
但是dubbo的新版本对重复的id做了特殊处理,如果本地创建了一个bean,然后又去注册中心拿到相同的bean,就会重复直接抛异常
检查结果:自己的测试项目中并没有重复加载配置文件或者存在相同的dubbo配置
2.spring扫描项目时,不仅会扫描当前项目中dubbo消费者,新建的类等需要注册的bean
还会扫描pom.xml中引入的jar包中的带有以下注解的类:@Component,@Repository,@Service,@Controller,@RestController,@ControllerAdvice, @Configuration
所以在引入包的时候,不能引入service包,因为service层的类多包含有注解@service,需要引入的是facade接口层的jar包
检查了一下,自己引入的就是service层的jar包,至此问题找到了
<dependency><groupId>com.msa.base</groupId><artifactId>base-service</artifactId><version>1.0-SNAPSHOT</version></dependency>
修改成facade层的引入
<dependency><groupId>com.msa.base</groupId><artifactId>base-service-facade</artifactId><version>1.0-SNAPSHOT</version></dependency>
重跑测试类:调用成功
转载于:https://www.cnblogs.com/xiuxingzhe/p/9287222.html
Duplicate spring bean id相关推荐
- 分布式项目启动时报错:Duplicate spring bean id XXX
报错如下 org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XM ...
- 记录 Duplicate spring bean id dubbo
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 启动工程 报错如题: Duplicate spring bean id dubbo ,意思是i ...
- spring Bean自动装配
spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...
- Spring Bean 中的线程安全
在 使用Spring框架时,很多时候不知道或者忽视了多线程的问题.因为写程序时,或做单元测试时,很难有机会碰到多线程的问题,因为没有那么容易模拟多线 程测试的环境.但如果不去考虑潜在的漏洞,它就会变成 ...
- Spring Bean配置方式之一:Java配置
简介: Spring bean 是使用传统的 XML 方法配置的.在这篇文章中,您将学习使用基于纯 Java 的配置而非 XML 来编写 Spring bean 并配置它们.本文将介绍可用来配置 be ...
- Spring bean 之 FactoryBean
原文地址:http://www.carlzone.cn/spring... Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean.Spring Fac ...
- spring bean scope作用域及多线程安全问题场景分析
2019独角兽企业重金招聘Python工程师标准>>> Scope作用域 在 Spring IoC 容器中具有以下几种作用域: singleton:单例模式,在整个Spring Io ...
- Spring Bean 装配和依赖注入
Spring IOC 容器的依赖注入工作可以分为两个阶段.第一个阶段可以认为是构建和收集 Bean 定义的阶段,在这个阶段中,我们可以通过 xml 或者 Java 代码的方式定义一些 Bean,然后通 ...
- Spring ----Bean的生命周期
这Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理, 一般担当管理者角色的是BeanFactory或ApplicationConte ...
- spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)
这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据: WebSer ...
最新文章
- 生成随机长度字符串,比如密码等
- WMRouter:美团外卖Android开源路由框架
- 解决CodeIgniter大量查询sql时占用内存大问题
- 容器编排技术 -- Kubernetes kubectl create configmap 命令详解
- Android系统(221)---O版自定义开关机动画
- python三层设计_推荐3个Python实现算法和设计模式的工具
- linux recv 返回值与linux socket 错误分析
- 洛谷——P1319 压缩技术
- 计时器 【扩展欧几里得+BSGS】
- 大学python教材课后答案_大学慕课2020年Python编程基础课后答案
- WIN10电脑端微信字体变模糊如何调节回来
- 如何下载最新Windows10镜像文件(.iso文件)
- php阴阳万年历转换的接口,用php写的阴阳万年历
- 保你学会Springboot如何前后端分离地传输数据!(后端,前端的坑过几天填上)
- 在安卓手机上搭建一台微型服务器
- 运维与Python之间有着怎样的联系?
- UI-Vuetify框架
- Linux的操作系统
- Excel中sheet名字最大长度的坑
- linux 下中文字体的支持