使用CSE开发,启动服务时发现xml bean文件加载两次
使用CSE开发微服务,启动时发现xml bean文件加载两次。
这种情况一般是因为重复加载Application Context导致的;
可能出现场景:
一、SpringBoot接入CSE;
比如使用spring的注解@ImportResource导入了两次sping bean配置文件;
二、CSE原生应用开发;
没有按照推荐的方法开发原生应用,比如多余地引入了spring-boot-starter-provider依赖
备注:
CSE原生应用开发定位过程:
ServiceComb的bean加载了两遍
跟踪到Spring代码的ConfigurationClassBeanDefinitionReader的loadBeanDefinitions方法,发现是加载了名为serviceCombSpringConfiguration的配置类导致的
这个ServiceCombSpringConfiguration会让Spring再次加载一遍ServiceComb提供的bean配置文件
所以问题根因就定位清楚了,原因是多引入了这个类,本来它只在SpringBoot应用接入CSE时才用的,而当前应用是原生ServiceComb应用,不需要引用它;
这个类所在的jar包是spring-boot-starter-servicecomb,在这个demo里是由spring-boot-starter-provider引入的
所以注释掉pom文件里面的spring-boot-starter-provider就可以解决问题了
- 点赞
- 收藏
- 关注作者
评论(0)