网站名称重要吗,网站服务器租用技巧,公司网站建设费用如何做账,高端广告公司名字文章目录 1、背景2、解决3、一点思考4、环境升级导致AOP失效5、okhttp Bean找不到6、总结 记录一些Maven依赖相关的思考
1、背景
做一个监控指标收集#xff0c;用一下jna依赖#xff1a;
dependencygroupIdnet.java.dev.jna/groupIdartifact… 文章目录 1、背景2、解决3、一点思考4、环境升级导致AOP失效5、okhttp Bean找不到6、总结 记录一些Maven依赖相关的思考
1、背景
做一个监控指标收集用一下jna依赖
dependencygroupIdnet.java.dev.jna/groupIdartifactIdjna/artifactIdversion${dev.jna.version}/version!-- dev.jna.version5.12.1/dev.jna.version --
/dependency发现采集失败根据错误信息怀疑是依赖问题
mvn dependency:tree | grep jna根据返回结果发现elastic search的依赖种也有用到jna依赖冲突了
2、解决
首先想到直接排除依赖
dependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdexclusions!-- 排除 Elasticsearch 自带的旧版 JNA --exclusiongroupIdorg.elasticsearch/groupIdartifactIdjna/artifactId/exclusion/exclusions
/dependency写完发现这个jna坐标还是es自己的应该是es自己做了一些二次开发和补丁这样直接排除大概率ES自身的功能要受影响于是考虑
升级整个 Elasticsearch 依赖版本使其自带的jna和我需要的版本不再冲突选择一个jna的版本兼容ES 最后打开官方仓库https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch/7.17.28升级ES到7.17.28版本并且父pom里管理下版本
dependencyManagementdependencygroupIdnet.java.dev.jna/groupIdartifactIdjna/artifactIdversion${dev.jna.version}/version!-- dev.jna.version5.12.1/dev.jna.version --/dependency
/dependencyManagement3、一点思考
排除依赖前考虑下影响比如 版本不兼容问题要是引入的其他 JNA 版本和 Elasticsearch 不兼容可能会出现NoClassDefFoundError、LinkageError等错误 功能缺失情况对于这种二开依赖的更要注意换依赖后原来的一些二开的补丁功能丢失的问题
4、环境升级导致AOP失效
系统近来在做升级JDK从8升级到了JDK 17相应的SpringBoot和SpringCloud版本也在更新迭代升级后新开发了一个AOP结果发现一直不生效首先排除常见的原因比如
方法是private代理失败内部调用没有enable AOP功能
等等因为之前的AOP功能都是正常的因此考虑是否是版本升级导致搜索相关依赖发现有aspectjweaver依赖但没有spring-boot-starter-aop依赖回到升级前发现aop的依赖在open-feign里 openfeign-core在3.1.0是有aop依赖的但升级到4.2.1版本后aop不再包含了 因此需要额外手动引入下spring-boot-starter-aop依赖
5、okhttp Bean找不到
同样的升级后服务启动报错okhttp Bean找不到了
dependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion${okhttp3.version}/version/dependency升级前版本是3.14.9搭配下面这配置
spring:cloud:openfeign:okhttp:enabled: true升级后启动发现okhttp Bean找不到升级了下依赖版本解决
okhttp3.version4.12.0/okhttp3.version6、总结
依赖大升级比如从2.x到3.x一些API和核心类难免会被重构优化此时就会导致一些类找不到、原本包含的依赖升级后需要你自己引入一下、版本冲突导致一些自动装配失效等等一系列的问题注意兼容和影响范围