项目升级遇到的坑
背景
因为最近项目需要迁移,而 JDK17 现在属于稳定版本。于是,决定将之前的 Java 项目由 JDK8 升级到 JDK17。在升级时,考虑到 SpringBoot 版本需要与之匹配,目前 SpringBoot 的稳定版本是 2.7.1。所以,在将 JDK 升级到 17,SpringBoot 版本也升级到 2.7.1。那么,问题接踵而至。
问题
遇到的问题就是项目连接 Apollo(携程开源的统一配置中心)报错
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer
服务无法启动。
由于旧版本的 apollo-client 不支持 JDK17,需要将 apollo-client 升级到 2.0 及以上。
项目启动后,出现异常。信息如下:
看起来是 pageHelper 自动装配出现的循环依赖问题。确实在 SpringBoot2.6 以上明确禁止循环依赖,那么在 pageHelper 的 1.4.1 版本中解决了此问题。
最后的问题集中在 swagger 上。具体解决办法可以参见此链接https://juejin.cn/post/7100606066567675911
总结
目前,项目是能够正常启动。但是,功能是否都能正常使用,还需要测试人员仔细进行测试。总之,项目升级是好事,保持项目与时俱进的活力。但是,如果不懂原理瞎升级,就可能埋下连自己都不知道的坑,可能某一天就会造成无法挽回的事故和损失。
版权声明: 本文为 InfoQ 作者【技术小生】的原创文章。
原文链接:【http://xie.infoq.cn/article/eea98ad0b8957741120589883】。文章转载请联系作者。
评论