芋道微服务 spring cloud 多模块,启动时无法依赖公共模块的bean

1、启动报错信息。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-08-26 13:55:08.454 ERROR 5600 --- [main] [TID: N/A] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'operateLogApiImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'operateLogServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminUserService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'permissionServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'deptServiceImpl': Bean with name 'deptServiceImpl' has been injected into other beans [deptServiceImpl] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesForType' with the 'allowEagerInit' flag turned off, for example.
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:332)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
    at cn.iocoder.yudao.module.system.SystemServerApplication.main(SystemServerApplication.java:25)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'operateLogServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminUserService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'permissionServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'deptServiceImpl': Bean with name 'deptServiceImpl' has been injected into other beans [deptServiceImpl] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesForType' with the 'allowEagerInit' flag turned off, for example.

2023-08-26 13:55:08.390  INFO 5600 --- [main] [TID: N/A] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closing ...
2023-08-26 13:55:08.394  INFO 5600 --- [main] [TID: N/A] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
2023-08-26 13:55:08.394  INFO 5600 --- [main] [TID: N/A] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
2023-08-26 13:55:08.395  INFO 5600 --- [main] [TID: N/A] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
2023-08-26 13:55:08.395  INFO 5600 --- [main] [TID: N/A] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource all closed success,bye
2023-08-26 13:55:08.397  INFO 5600 --- [main] [TID: N/A] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2023-08-26 13:55:08.418  INFO 5600 --- [main] [TID: N/A] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-08-26 13:55:08.454 ERROR 5600 --- [main] [TID: N/A] o.s.boot.SpringApplication               : Application run failed

2、项目环境与bug说明

  • 项目有一个微服务功能合并到另一个微服务里面去了,然后把这个微服务删除了,主pom里面对应的内容也删除了
  • 项目是用的芋道微服务架构,项目有公共模块,具体的业务微服务都会在pom文件中引用公共模块。
  • 项目之前项目启动都是正常的,所以在启动类上添加 扫描包路径也是没用的,因为已经在依赖里面添加了公共模块的依赖。

3、bug处理过程

  • 首先在代码的报错地方进行 debug,通过 evaluation 里面执行 SpringUtil.getApplicationContext().getBean("缺少的bean"),得到的结果就是null,说明公共依赖里的bean还没有创建。
  • 网上很多说要在启动类上加 @ComponentScan(basePackages = {"xxx.xxx"}),我试了没用,因为pom里面引用了,把公共模块所谓子模块引用就能获取到对应的bean了。
  • 然后联想到我只是把某一个子模块删除了,然后出现的这个问题,应该是maven依赖的问题,它可能直接去本地仓库去找公共模块了,然后去本地仓库一看,果然有对应的 artifactId;我就把本地仓库有关的依赖都给删除了。
  • 删除了启动还是报错,这就奇怪了,它应该没问题了啊,而且我已经重启过 idea,清理过缓存了,但是执行 maven clean 报错了,显示从仓库里找不到 公共依赖,我都删除了呀,怎么还去仓库里面找了??????
  • 最后的解决方法是 把 父 pom 里面的所有微服务注释掉,刷新maven,这时候各个微服务都没有父项目,然后再把注释打开,再刷新maven,然后启动就 ok 了。


    image.png

4、总结

这个bug困扰了我半天,最开始就怀疑是缓存的问题,我甚至都重启电脑了,还是启动报错,而且在 它的报错内容里面有很多 error create bean XXX ,然后看了很多无用的博客,启动了几个微服务报的错都不一样,每个服务报错的源头都是引用的 公用依赖的 bean 是null。所以就是公用模块的依赖问题了。
对于原来项目启动没问题,改动pom文件导致的项目启动失败,大概率都是maven本地仓库的缓存,或者就是项目里面的缓存。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358