问题背景:从本地调用服务器的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相关推荐

  1. 分布式项目启动时报错:Duplicate spring bean id XXX

    报错如下 org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XM ...

  2. 记录 Duplicate spring bean id dubbo

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 启动工程  报错如题:  Duplicate spring bean id dubbo  ,意思是i ...

  3. spring Bean自动装配

    spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...

  4. Spring Bean 中的线程安全

    在 使用Spring框架时,很多时候不知道或者忽视了多线程的问题.因为写程序时,或做单元测试时,很难有机会碰到多线程的问题,因为没有那么容易模拟多线 程测试的环境.但如果不去考虑潜在的漏洞,它就会变成 ...

  5. Spring Bean配置方式之一:Java配置

    简介: Spring bean 是使用传统的 XML 方法配置的.在这篇文章中,您将学习使用基于纯 Java 的配置而非 XML 来编写 Spring bean 并配置它们.本文将介绍可用来配置 be ...

  6. Spring bean 之 FactoryBean

    原文地址:http://www.carlzone.cn/spring... Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean.Spring Fac ...

  7. spring bean scope作用域及多线程安全问题场景分析

    2019独角兽企业重金招聘Python工程师标准>>> Scope作用域 在 Spring IoC 容器中具有以下几种作用域: singleton:单例模式,在整个Spring Io ...

  8. Spring Bean 装配和依赖注入

    Spring IOC 容器的依赖注入工作可以分为两个阶段.第一个阶段可以认为是构建和收集 Bean 定义的阶段,在这个阶段中,我们可以通过 xml 或者 Java 代码的方式定义一些 Bean,然后通 ...

  9. Spring ----Bean的生命周期

    这Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理, 一般担当管理者角色的是BeanFactory或ApplicationConte ...

  10. spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)

    这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据: WebSer ...

最新文章

  1. 生成随机长度字符串,比如密码等
  2. WMRouter:美团外卖Android开源路由框架
  3. 解决CodeIgniter大量查询sql时占用内存大问题
  4. 容器编排技术 -- Kubernetes kubectl create configmap 命令详解
  5. Android系统(221)---O版自定义开关机动画
  6. python三层设计_推荐3个Python实现算法和设计模式的工具
  7. linux recv 返回值与linux socket 错误分析
  8. 洛谷——P1319 压缩技术
  9. 计时器 【扩展欧几里得+BSGS】
  10. 大学python教材课后答案_大学慕课2020年Python编程基础课后答案
  11. WIN10电脑端微信字体变模糊如何调节回来
  12. 如何下载最新Windows10镜像文件(.iso文件)
  13. php阴阳万年历转换的接口,用php写的阴阳万年历
  14. 保你学会Springboot如何前后端分离地传输数据!(后端,前端的坑过几天填上)
  15. 在安卓手机上搭建一台微型服务器
  16. 运维与Python之间有着怎样的联系?
  17. UI-Vuetify框架
  18. Linux的操作系统
  19. Excel中sheet名字最大长度的坑
  20. linux 下中文字体的支持

热门文章

  1. Umbraco中的Examine Search功能讲解
  2. Java 多并发之原子访问(Atomic Access)
  3. 《软件工程》总结——第四章
  4. Linux LVM动态扩容
  5. python正则表达式应用
  6. DIV+CSS网页设计布局应用详解视频教程
  7. poj 3630 简单Trie树的应用
  8. docker+elasticsearch的安装
  9. JDK5后的特性整理
  10. 2017CodeM复赛