个人使用: 18版本替换问题处理以及方案

个人使用: 18版本替换问题处理以及方案,第1张

个人使用: 18版本替换问题处理以及方案

需求 : 目前修改中的项目中涉及mybatis,需要升级对应mybatis版本至3.5.9

起因是

对应log4j2的史诗级bug造成系列头部的开源项目均受到一定影响,进行版本紧急升级。

因为项目中大部分是用的jpa,但是不排除部分项目混搭了mybatis架包。

首先直接进行jar包查询,是否存在mybatis 架包?

这里是替换之后,那么替换之前的 对应版本号是 3.4.6.

对应如何替换?

替换思想是 mybatis:3.5.9 (小于3.5.6则更新)

1、 如果存在 org.mybatis.spring.boot 下 mybatis-spring-boot-starter ,需要对应版本号提升到 2.2.1


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    2.2.1

2、如果存在 tk.mybatis 下 mapper-spring-boot-starter ,对应去掉 mybatis依赖


                tk.mybatis
                mapper-spring-boot-starter
                ${tk.mybatis.version}
                
                    
                        org.mybatis
                        mybatis
                    
                
            

3、原先项目中仅 *** 作了1 ,2 二步 *** 作,遗漏了最关键的 *** 作。引入 mybatis 3.5.9 架包

        3.5.9
 
 
                org.mybatis
                mybatis
                ${mybatis.version}
            

其实版本升级本质是 对应版本将低版本都 删除或者 接触低版本的依赖,替换成高版本 来进行依赖。

这里因为遗漏了 mybatis架包依赖,导致 使用到tk.mybatis 使用到mybatis报错。盲目随意引用同名注解,服务可以启用,但是具体业务调用报错。

这里来论述如何解决,jar版本升级中出现的错误。

1、升级版本,一般好的开源项目是支持高版本兼容低版本的接口以及实现的。但是存在一些接口跟实现在版本迭代中被废弃。

升级版本,平安无事,说明兼容性做的好。

升级版本,报错,意料之中。很大程度是你引入版本的时间跟目前较新版本的时间差距较大。如何进行修改?

像上面出现的问题,其实最应该 *** 作的是第3步,引入mybatis 3.5.9架包,然后在个别jar中内部引用各自的 mybatis 中进行解除依赖。

这里比较合适的做法是,个别jar 是否存在对应mybatis 架包版本是3.5.9的,然后升级个别jar包的版本号。比如上述 1中的

org.mybatis.spring.boot 下 mybatis-spring-boot-starter , 由原来的 2 . 1 .0 升级为 2 .2 .1;

也可以是 原先jar中解除对该架包的依赖, 比如 上述 2 中的 tk.mybatis 下 mapper-spring-boot-starter 。去掉mybatis依赖。

去掉依赖之后,就必不可少要进行上述 3 的 *** 作。添加mybatis 3.5.9架包。

这里需要在 整个项目的 pom.xml 中进行引入 该架包的 *** 作,也就是上述的3;

其次需要在 解除对mybatis架包依赖的对应,具体项目使用中,也添加上mybatis架包依赖。 对应在 claimcenter - dal的pom.xml中

         【原先的引用,在pom.xml中 去掉了自身版本携带的mybatis依赖】
            tk.mybatis
            mapper-spring-boot-starter
        

        
            mysql
            mysql-connector-java
            runtime
        

          【本次新增的mybatis架包,来替换mybatis依赖】
            org.mybatis
            mybatis
        

这样就进行平等替换,升级了mybatis版本。

额外问题思考方法。也存在 某些方法在低版本中存在调用方法以及实现。在高版本中则不存在该方法调用。

1、要验证,是否是高版本对应方法或者实现被删除或者挪位置。 一般来说不被删除,对应高版本跟低版本应该是同一路径下。所以按照同一路径下文件以及文件内容进行比对,等到是否是被删除?

对应jar下载 可以上maven的网站下载 https://mvnrepository.com/

2、如果确定路径一致,那么基本是对应jar未导入导致的,或者对应子项目中未引入该jar导致。需要再检查一下pom.xml文件实现。

3、如果对应路径中不存在,以及对应版本jar内都无该方法或者实现。 那么就需要查看官方给出的替代方案。

3.1、基本思路是百度优先,对应版本号以及方法去百度查询,查询是否是后期被优化作废了,以及对应解决方案是什么?

3.2、手动查询当前最新版本的版本0 ,对应查询是否有该方法。一般好的开源项目版本迭代,作废的接口以及实现都会保留几个版本,缓慢替换,也会在官网或者版本发布时候提供解决方案。 这里查询办法类似二分法对比。 当前在使用的版本对应下一个大版本中进行查询是否存在,以及需要替换的高版本前对应的大版本进行查询是否存在,如果前者存在后者不存在,则去查询对应中间版本,依次去查询在具体哪个版本弃用,对应版本提供的官方文档中替换方案以及解决方法是什么?

续版本: 如何有效查询项目中是否有需要变更的版本。

1、查看。

对应jar是否有自己需要替换的,以及对应版本号是否恰当。

2、查看仅是知道存在,这里存在区分二种,一种是项目中直接引用的,该引用部分处理较为简单,在对应pom.xml进行搜索即可。

第二种隐蔽型,也就是非直接引用。但是你引用到的jar中,他们再去引用了。这部分就需要用下面方法了,修复方法是去除jar本身引用,然后把这部分修改成我们来直接引用。

比如

xstram 对应是XStream 是一个简单的基于 Java 库,Java 对象序列化到 XML,反之亦然(即:可以轻易的将 Java 对象和 xml 文档相互转换)。

步骤 确定该jar的 路径名 这里是

com.thoughtworks.xstream:xstream

所以对应可执行mvn 语句为  
mvn dependency:tree -Dverbose -Dincludes=com.thoughtworks.xstream:xstream

执行效果如下 执行在 Terminal 中执行即可

由上可知 对应在 org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:jar:2.1.1.RELEASE:compile 中存在 所以需要做处理

  1.4.18
 // 类似 *** 作如下,解除原先的版本依赖,然后自己定义一个版本
 
    
      org.springframework.cloud
      spring-cloud-starter-eureka
      
        
          com.thoughtworks.xstream
          xstream
        
      
    

    
      com.thoughtworks.xstream
      xstream
      ${xstream.version}
    
    
    
    
这里罗列 需要改动到的版本号
fastjson  修正版本为1.2.78
com.alibaba:fastjson

所以对应可执行mvn 语句为  
mvn dependency:tree -Dverbose -Dincludes=com.alibaba:fastjson


xstream     修正版本为1.4.18
com.thoughtworks.xstream:xstream

所以对应可执行mvn 语句为  
mvn dependency:tree -Dverbose -Dincludes=com.thoughtworks.xstream:xstream



log4j 2.x [对应修改版本2.x   修正为 2.17.1  对应1.x跳过]
log4j:log4j
mvn dependency:tree -Dverbose -Dincludes=log4j:log4j



mybatis    修正版本为 3.5.9
org.mybatis:mybatis
mvn dependency:tree -Dverbose -Dincludes=org.mybatis:mybatis



对应更正后,再执行以下,看对应版本是否正确

漫漫长路,一个小周跟他一个小陈朋友一起努力奔跑。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存