本人有个项目从一开始就是用JFinal,一开始使用的是1.x(具体忘了),一路跟着升级到3.4。
在发布3.5时,打算升级的,可发现 DbPro.deleteById 方法有问题又回到3.4了 (3.6时修复了 https://www.jfinal.com/feedback/4634 )。后来由于工作的调动也就没再理这个项目了。
现在又回到这项目了,发现JFinal已升到4.2。作为一名版本控,那有不升级的道理。
项目使用的是JFinal3.4 +JFinal-WeiXin2.1,升级到JFinal4.2 +JFinal-WeiXin2.3
第一步:更改JFinal 、JFinal-WeiXin、jetty依赖
好家伙,满满的红叉。
简单看了下,主要是因为俩个变更
1、Enhancer类及相关方法停用、删除。这个在网站上文档中的没有做说明,幸好Enhancer类还在,有注释说明改用Aop类。
跟着文档配置,调整小部分代码,OK。
2、3.6版本中Db、Model 针对多主键(联合主键)的 findById、deleteById 方法添加一个 's' 后缀,改成 findByIds、deleteByIds
在使用到联合主键findById、deleteById 后面加个s,OK
3、JMap类已删除,替换成Kv 类
红叉没了,启动项目,无报错,测试各功能,发现接收不了微信消息。
马上看文档,需要在 configRoutes 中配置 me.setMappingSuperClass(true)
添加再运行,还是不行,难道是 是我增加了BaseMsgController 多层继承导致me.setMappingSuperClass(true)没起作用?
一时也找不到原因为什么me.setMappingSuperClass(true)没起作用,那直接重写index()方法,调用超类的index()方法,OK!
@Before(MsgInterceptor.class) public void index() { super.index(); }
再也没问题了,部署到tomcat,项目启动不来了,报找不到AOP类的错误。
额~~~~~~~~~
JFinal 的包在啊,依赖也没错阿,环境也正常啊,怎么就有这莫名其妙的错误。
弄了一两个小时还是没结果。打算来这问问,发现有人也遇到同样的问题。根据评论上的方法,升级到4.3,完美解决
http://www.jfinal.com/feedback/5985
项目也就完成了从JFianl3.4 升级到JFinal4.2 不对,是 JFinal4.3才对
1:类改名、方法改名
2:删除一些类、方法,但同时提供更简洁的替代方案
一般来说,如果你的应用没有深度扩展过 jfinal , 从老版本升到新版本多数工作分三步:
1:依赖改为最新版本
2:根据 eclipse、IDEA 的错误提示,改改类名、方法名
3:剩下的问题查看社区的升级文档:https://www.jfinal.com/doc/14-1
建议在升级的时候首先关注一下社区的升级文档,做到心中有数
感谢你的分享