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 ...
随机推荐
- Web开发的发展史
英文出处:arunr.欢迎加入翻译小组. 导读:Arunr 把过去 15 年以来,Web开发从最初的纯 HTML 到 CGI.PHP\JSP\ASP.Ajax.Rails.NodeJS 这个过程简要地 ...
- eclipse集成html5插件
1. 在线安装:Help->Install New Software...->Add...-> Name: "Aptana", Location: http:// ...
- qualcomm memory dump 抓取方法
Memory dump是系统出现crash时常用的分析故障原因的方法,qualcomm 各子系统运行时,为方便debug,都会开辟ram log和debug variable用于保存各系统运行信息及健 ...
- Oracle开发环境搭建
一.软件准备 地址:oracle官网 安装包:因为个人学习用,所以就安装服务器端就可以了,不需要客户端. 一共两个压缩文件,解压时一起解压到到一个文件夹. 本人使用的:win32_11gR2_data ...
- Tomcat中定制阀门
我们说管道机制给我们带来了更好的扩展性,Tomcat中在扩展性方面具体如何体现,这便是本节讨论的内容.从上节了解到基础阀门是必须执行的,假如你需要一个额外的逻辑处理阀门,可以添加一个非基础阀门. 我的 ...
- 【一天一道LeetCode】#89. Gray Code
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 The gra ...
- React Native之AppRegistry模块
我们在写react native的js的时候,在最后总会加上一段代码: AppRegistry.registerComponent('ReactDemo', () => ReactDemo); ...
- Chipmunk碰撞形状:cpShape
目前有3种碰撞类型: 圆(Circles):最快并且最简单的碰撞形状 线段(Line segment):主要用于静态形状.可以表示斜线(Can be beveled in order to give ...
- JAVA中IO流总结
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42119261 我想你对JAVA的IO流有所了解,平时使用的 ...
- 在Cocos2D中改变动态物体为静态物体
原文链接,有压缩和简化 1.导入一个新的头文件 首先你要知道,不是所有Chimpunk特性都通过Cocos2d的类暴露出来,比如CCPhysicsNode和CCPhysicsBody.对于一些更高级的 ...