Dubbo配置引发的一个问题--- Duplicate spring bean id
1.原因
因项目业务需要,要调用RPC框架,项目原本已经依赖了很多RPC接口需要启动时加载,所以准备做成启动时不预加载。 就是在配置的时候加上check=false.
官方文档解释的作用,就是Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true"。
2. 好处
首先check的配置在立即加载的环境下可以来检查是否有服务未初始化,设置为true,如容器初始化时有未初始化的服务被注入可抛出异常让应用初始化无法完成,设置为false则可以不影响应用的启动,后续服务初始化完成后依然可以正常连上。也就是说check=false的配置本身可以解决循环依赖的问题。
懒加载是一种bean加载策略,并非和dubbo有直接的联系,也并非直接为了解决服务的循环依赖而存在,这种加载方式主要作用在于节约资源,提升性能,亦可以解决循环依赖的问题,只是如有加载了dubbo服务引用的bean要应用懒加载策略,需要check设为false来防止出现未完全装配的bean影响应用的正常运行。
3.问题
我们平时想调用RPC接口只需要在我们的dubbo配置文件中引入生产者的配置文件在POM.XML中加上依赖。

但是这种配置文件是我们直接引入不可以修改属性,所以我们需要自己创建一个dubbo的配置文件将自己需要的接口引入进来再加上
这个属性。
当我创建好文件将项目启动的时候,问题来了!

问题很明显就是bean创建了两次,从网上寻找答案,就是dubbo版本升级后重复加载Bean的时候不再是覆盖,而是抛异常。继而我从项目中去寻找此接口并没有发现其他地方的引用,然后我就跟踪查看启动信息。

我默认扫描了spring文件夹下的所有配置文件,包括这个我新创建用来修改dubbo接口配置的文件。然后当我dubbo的文件再次加载的时候就会遇到这个问题。
原因就是:新创建的配置文件不要再放在启动就扫描的resources默认文件夹下,新创建一个文件夹去放你所创建的文件。
4.反思
遇到问题的时候要有思路的去解决,一定要查看日志,从这些可用的条件中去排查问题。
引用-----
https://blog.csdn.net/aqi__/article/details/78727339 dubbo常用的配置
https://www.cnblogs.com/linjiqin/p/5859153.html
,
Dubbo配置引发的一个问题--- Duplicate spring bean id的更多相关文章
- Duplicate spring bean id
问题背景:从本地调用服务器的dubbo接口进行测试 实现思路:基于IDEA+Spring+maven+Dubbo搭建测试项目,从本地直接调用 具体实现思路可参考博客:https://www.cnb ...
- dubbo spring bean id冲突
service-security-provider应用有provider和consumer配置文件 其中secutrity-consumer引用两个服务 <dubbo:reference int ...
- spring bean id和bean name的区别
今天在分析问题时发现一个大家平时都不太注意的spring 配置问题,发出来分享下: 首先澄清一个概念: 同名bean:多个bean 有相同的 name 或者 id,称之为同名bean <bean ...
- spring bean id重复覆盖的问题解决
问题: 当我们的web应用做成一个大项目之后,里面有很多的bean配置,如果两个bean的配置id是一样的而且实现类也是一样的,例如有下面两份xml的配置文档: beancontext1.xml &l ...
- JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)
接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...
- Spring bean到底是如何创建的?(上)
前言 众所周知,spring对于java程序员来说是一个及其重要的后端框架,几乎所有的公司都会使用的框架,而且深受广大面试官的青睐.所以本文就以常见的一个面试题"spring bean的生命 ...
- 对Spring Bean了解一二
这之前从未听说过Spring Bean,今天因为学习的<Java核心36讲>其中一篇涉及到了这个内容,因自己基础薄弱,杨晓峰老师讲的内容需要一定的基础才能看懂,故在网上搜罗一些我能理解的关 ...
- Spring -- Bean自己主动装配&Bean之间关系&Bean的作用域
对于学习spring有帮助的站点:http://jinnianshilongnian.iteye.com/blog/1482071 Bean的自己主动装配 Spring IOC 容器能够自己主动装配 ...
- Spring动态代理及Spring Bean的生命周期
数组添加值 public class DiTest { /** * 数组 */ private String [] arrays; /** * List:集合 */ private List<I ...
随机推荐
- Java 实现的各种经典的排序算法小Demo
由于有上机作业,所以就对数据结构中常用的各种排序算法都写了个Demo,有如下几个: 直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 选择排序 桶排序 Demo下载地址 下面谈一谈我对这几个排 ...
- 用SpriteBuilder简化"耕牛遍地走"的动画效果(三)
接下来的代码和原文差不多,建立一个数组用来存放动画帧,然后用数组来初始化一个CCAnimation动画对象.接着将牛放在屏幕中心,然后运行动画: NSMutableArray *walkAnimFra ...
- 调试bootmgr&winload vista&win7 x86&x64
设置调试bootmgr 1.以管理员权限运行cmd.exe 2.执行以下命令 3. 参照我的另一篇文章<win8 + vmware + windbg 双机调试 >中的第1.3步,建立wi ...
- 小试ImageMagik——使用篇
===================================================== ImageMagick的使用和开发的文章: 小试ImageMagik--使用篇 小试Imag ...
- SQL Server扫盲系列——安全性专题——SQL Server 2012 Security Cookbook
由于工作需要,最近研究这本书:<Microsoft SQL Server 2012 Security Cookbook>,为了总结及分享给有需要的人,所以把译文公布.预计每周最少3篇.如有 ...
- Touch Handling in Cocos2D 3.x(一)
原帖地址 Cocos2d 3.0 带来经过完全修正后的触摸处理系统.本篇博文将提供所有触摸相关的信息: 接收触摸 取得触摸位置 处理不同个触摸生命周期中的事件 实现一个拖放机制 让我们开始吧 ;) 通 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十六)
接上篇,我们实现菜单窗口的弹出和关闭功能,首先在打开GameScene.m,添加必要的实例变量: __weak PopupLayer *_popupLayer; 再添加2个新方法: -(void)re ...
- [Redis]处理定时任务的2种思路
用redis完成类似 at 命令的功能,例如订单24小时后没有支付自动关闭,定时发邮件,主要说下任务生成之后怎么触发消费. 使用 有序集合 思路: 使用sorted Sets的自动排序, key 为任 ...
- 【一天一道LeetCode】#60. Permutation Sequence.
一天一道LeetCode系列 (一)题目 The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and ...
- equal与== 个人笔记
首先看看下面的图,看清楚了图咱们要说的知识点也就说说清楚了一半 int a=10; String b="ss"; String c=new String("kkk&quo ...