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 ...
随机推荐
- 分布式集群Session共享 简单多tomcat8+redis的session共享实现
; i++) { str = str + session.getAttribute("name" + i) + "<br>"; } response ...
- 【leetcode76】Intersection of Two Arrays II
题目描述: 给定两个数组求他们的公共部分,输出形式是数组,相同的元素累计计数 例如: nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2]. 原文描述: G ...
- Java中Set的contains()方法
Java中Set的contains()方法 -- hashCode与equals方法的约定及重写原则 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashCode() a ...
- wordpress入门基础:wordpress文件系统结构详细介绍
根目录|| wp-admin — wp-content — wp-includes| | |___________________________________ ...
- (二十六)静态单元格(Cell)
制作类似iOS系统设置的页面,如果使用代码来实现,将会比较麻烦,可以通过静态单元格技术方便的实现. 注意:静态单元格只支持TableViewController. 可以通过storyboard直接操作 ...
- Mahout 系列之--canopy 算法
Canopy 算法,流程简单,容易实现,一下是算法 (1)设样本集合为S,确定两个阈值t1和t2,且t1>t2. (2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p. (3 ...
- Leetcode_49_Anagrams
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42744709 Given an array of stri ...
- Leetcode_128_Longest Consecutive Sequence
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43854597 Given an unsorted arra ...
- 集团公司(嵌入ETL工具)财务报表系统解决方案
集团公司(嵌入ETL工具)财务报表系统解决方案 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包括:金矿.铜矿.房产.化纤等.由于子公司在业务上的差异,子 ...
- PLSQL WEBSERVICES 发布
一. 在Oracle EBS二次开发中,PL/SQL程序是开发人员使用频率最高的开发语言,同时也是大家最容易掌握的工具之一了,而我们也很希望将自己编写的PL/SQL程序发布为Web服务来提供给 ...