apache shiro 怎么升级_jspxcms升级springboot版本小记

公司有一套基于jspxcms的门户内容管理系统,打算做下springboot的版本升级。折腾了几天,今天总算是成功了。下面将其中将升级过程进行的改变做一些记录。

环境:jspxcms 9.5.1

目标:springboot版本从1.5.19升级到2.2.6

第一步:修改pom.xml中的boot版本

d2622a7e4aeedcd6a6b847df88f7b461.png

第二步:修改JPA相关

在升级过程中,这一块花的的时间最多,卡得太久。

我们找到如下java文件

ac1d8fd749ea46c8b99fd8246a9fe8f4.png

此刻我们已经会发现 MyQueryDslJpaRepository就有开始报错,排查会发现QueryDslJpaRepository引起的 这个地方够坑,QueryDslJpaRepository是1.5.19的版本类名,在2.2.6下该类已经过时,

并且更名为QuerydslJpaRepository. 恰恰就是这个么个改变,导致引发了一堆如下形式的错误

No property xxx found for type xxx

为了解决这个错,把jpa的实现原理看了几次(原理值得深究,可以学到不少额)。我们注意到InfoDao这个接口有如下几个方法

public Page findAll(Specification spec, Pageable pageable);public List findAll(Specification spec, Limitable limitable);public List findAll(Iterable ids);

在系统运行过程中,你debug甚至会发现InfoDao.findAll压根就没法继续debug下去,经过反复调试,终于发现InfoDao的最终实现其实是借助MySimpleJpaRepository产生的代理类实现的

以public List findAll(Iterable ids);为例 其实最终执行的就是SimpleJpaRepository(MySimpleJpaRepository是SimpleJpaRepository的子类)的public List findAllById(Iterable ids)的方法。坑就坑在这里,方法名改成了findAllById 所以一直就出现错误 No property findAll for type Node这个错误,产生误导。于是,便将InfoDao中的public List findAll(Iterable ids);修改成 public List findAllById(Iterable ids); 相关的service类引入该InfoDao的该方法也一并修改。因为方法名引起错误的几个方法如下:

1.5.19 下 public Info findById(Integer id);

2.2.6 public Info findOne(Integer id);

1.5.19下 public void delete(Iterable extends T> entities)

2.2.6 public void deleteAll(Iterable extends T> entities)

相关的service爆红的一并做修改。

话回到第二步开始说到的QuerydslJpaRepository ,这个类已经过期怎么办呢,我们不用他,我们用QuerydslJpaPredicateExecutor代替他,这也是官方推荐的做法 ,最终如下

96225ce17065a61ddfbc81b2382d4a7f.png

第三步:有些类已经不能再使用new 这种方式构建实例了,因为升级后,相关的构造方法已经设计成private域,外部无法再new ,但是提供了相关的静态方法给使用,具体涉及到的类记录如下

Sort类(使用by方法) PageRequest类(使用of方法)  还有个什么类 忘记了

另外Pageable的offset由long换成了Int

第四步升级 tomcat pom中换成9.0.33

第五步:jsp相关

org.apache.tomcat.embed    tomcat-embed-jasper    provided

version最好换成10以上的版本 否则idea老出现

解决警告: Failed to scan JAR[...] java.util.zip.ZipException: error in opening zip file 这个警告

总之,按照以上五个步骤,基本没啥其他大的问题了 可以顺利升级,后续有啥问题 待后续发现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值