一、描述

  1. 在一次项目开发中,业务方需要改下发送到kafka的json消息中key的名称,把字符串小写的"id"改成了大写的"Id"
  2. 在构建部署上线的过程中 线上一直报警
  3. 重新构建下,然后部署上线就好了

二、分析

  1. 由于代码变动很小 基本上不会影响任何地方,所以排除是这次修改导致的
  2. 在第2点和第3点的情况下 可以初步判断是k8s部署平台的问题,是不是构建触发了其中的某个平台问题导致构建的jar包无法使用

三、原因

  1. 考虑到可能是k8s平台的问题,于是将该平台两次构建的jar包分别下载下来。然后对这两个jar包中的文件进行md5的计算,计算结果发现两个jar包中所有文件的md5值都是一样的,说明两次构建的结果应该是一样的
  2. 对第一次不能启动的jar包(假设为A.jar)里面的文件用可启动的jar包(假设为B.jar)进行依次替换,然后将A.jar放到服务器上运行,看日志。
  3. 在某次替换中发现了日志中出现如下提示
  4. 查看具体的循环依赖类发现,其中有个依赖是通过构造函数注入的,而构造函数注入是要求bean有特定的顺序。在构造函数注入之前 要保证被注入的对象已经实例化了。
  5. 构建后 虽然class文件的内容都一样,但是实际上bean被分配的内存地址存在差异,在某些情况下(概率还是比较小的)是会出现注入问题 项目无法启动的

四、解决

  1. 在构造函数注入上增加注解 @Lazy, 当需要这些bean的时候 才进行构造函数注入
  2. 将注入方式改成@Autowired字段注入或者@Autowird的set方法注入

五、备注

  1. 循环依赖问题对于都是使用字段注入或者方法是没有问题的,对于构造函数注入 会出现项目无法启动的问题

六、参考文章

https://blog.csdn.net/w1673492580/article/details/89380012

改了个字符串 项目无法启动,springboot循环依赖问题分析相关推荐

  1. SpringBoot循环依赖解决

    一.循环依赖是什么? 我们了解到SpringBoot通过注解componentScan注解.将Bean注入到Spring容器.那么在注入过程中,如遇到这样的问题在将BeanA注入到容器中的过程中:Be ...

  2. Springboot 循环依赖

    一.循环依赖 顾名思义多个类中的依赖形成了环路,形成了类似于死锁的情况,导致springboot在启动时无法为我们创建Bean.通俗来说 就是beanA中依赖了beanB,beanB中也依赖了bean ...

  3. Springboot循环依赖解决办法

    最近在使用Spingboot做项目的时候,在引入shiro 后,启动项目一直报错  Error creating bean with name 'debtServiceImpl': Bean with ...

  4. spring cloud 启动bean 循环依赖问题记录

    今天在搭建spring cloud 的过程中遇到了bean 循环依赖的问题,所以记录一下. spring-boot:2.0.1 spring-cloud:2.0.1 标记的地方出现了循环.导致启动不成 ...

  5. idea 项目编译不成功-循环依赖的问题

    解决方法: cd到项目根目录,执行命令:mvn dependency:tree -Dverbose -Dincludes=com.cacss.itas >d:\tree.txt,查看maven依 ...

  6. 解决springboot 循环依赖

    错误提示 Relying upon circular references is discouraged and they are prohibited by default. Update your ...

  7. 痛快 SpringBoot终于禁掉了循环依赖

    Spring的Bean管理,一直是整个体系中津津乐道的东西.尤其是Bean的循环依赖,更是很多面试官最喜欢考察的2B知识点之一. 但事实上,项目中存在Bean的循环依赖,是代码质量低下的表现.多数人寄 ...

  8. eclipse启动springboot项目_多模块项目中的一个Spring Boot启动错误

    问题描述 Springboot项目在启动时,报出了以下错误: ***************************APPLICATION FAILED TO START*************** ...

  9. gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。

    gitlab ci/cd拉取代码失败 使用gitlab cicd 构建自动化部署时,runner拉取代码失败了,突然想到是ip变更了(用的虚拟机,nat模式改成了桥接模式,然后导致ip变更了),拉取代 ...

最新文章

  1. memcached java 多线程_springboot使用memcache缓存
  2. 在showModalDialog和showModelessDialog中提交form时不弹出新窗口
  3. 宜昌远安谋定功能性-农业大健康·万祥军:绿色和谐新路
  4. 重磅 | 品牌零售行业数据驱动业务指南,全新上线!
  5. XML解析——Jsoup解析器
  6. php 异常 重试,Python中异常重试的解决方案详解
  7. hdu2709 Sumsets 递推
  8. RSA公钥体系 与在 ssh中免密的登陆的应用
  9. Node.js 替换文档内容
  10. 解决python偶尔读文件报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 1022-1023: unex....
  11. 命令行 编译 android6,Android: m, mm以及mmm编译命令以及make snod的使用
  12. SQL Server 2008性能故障排查(二)——CPU
  13. linux里卸载mysql数据库,Linux下卸载MySQL数据库
  14. bat代码雨代码流星_怎么制作无限弹窗效果? 限弹窗代码bat文件分享
  15. 计算机键盘中复制粘贴快捷键,电脑复制粘贴快捷键,教您电脑怎么用键盘复制粘贴...
  16. 判断中心对称图形C语言
  17. c语言角度换成弧度的编码,角度弧度转换代码
  18. 无线射频专题《射频合规,ISM频段》
  19. abl如何调用xbl里面的protocol
  20. webpack之常见性能优化

热门文章

  1. squid日志中关键字的含义
  2. 看〈走出软件作坊〉浅谈扁平化管理
  3. [Python] L1-056 猜数字-PAT团体程序设计天梯赛GPLT
  4. 蓝桥杯 ADV-136算法提高 大数加法
  5. mac自带自动化java_java Mac自动化-java和ant环境搭建
  6. 税收征管信息系统_聚焦湖北税收征管信息系统正式切换上线啦! 首日办理业务逾26万件...
  7. 如何新建Outlook电子邮件规则实现邮件自动分类
  8. 微服务 SpringBoot 通过jdbcTemplate配置Oracle数据源
  9. zookeeper安装与测试
  10. Java程序模拟QQ空间登录 - 并模拟刷说说的赞(图文) 注意:腾讯修改了加密算法,已失效(2015-01-31)