一、jfinal 3.0 之前版本的升级

jfinal 3.0 是大版本升级,此前版本升到 jfinal 3.0 请移步 14.2、14.3、14.4、14.5 小节,这几个小节中的内容极少,升级很方便。

二、jfinal 3.0 之后版本的升级

1、升级到 3.1

无需修改,平滑升级

2、升级到 3.2

IStringSource 更名为 ISource

按照 14.2 小节 升级 Ret

3、升级到 3.3

指令扩展中的 java.io.Writer 改为 com.jfinal.template.io.Writer,eclipse/IDEA 开发工具会主动给出提示

4、升级到 3.4

由于 Json 中的 defaultDatePattern 初始值由 null 改为 “yyyy-MM-dd HH:mm:ss”,JFinalJson 中删掉 datePattern 属性,所以要在 configConstant(Constants me) 中配置:me.setJsonDatePattern(null) 或者具体值

5、升级到 3.5

ISource.getKey() 更名为 ISource.getCacheKey()

6、升级到 3.6

Db、Model 针对多主键(联合主键)的 findById、deleteById 方法添加一个 ‘s’ 后缀,改成 findByIds、deleteByIds

用到 jfinal weixin 项目的 MsgController 时,需要在 configRoutes 中配置 me.setMappingSuperClass(true)

由于 jfinal 3.6 用于 sql 管理的 Engine 对象,默认配置了 engine.setToClassPathSourceFactory(),engine 将从 class path 和 jar 包中加载 sql 文件,所以如果 sql 文件以往是存放在 src/main/webapp 的需要转移至 src/main/resources 之下。如果以往配置过 arp.setBaseSqlTemplatePath(…),需要删除该行代码,或改为适应于 ClassPathSourceFactory 的配置,参考:https://www.jfinal.com/doc/6-2

7、升级到 3.8

用到 Aop 配置方法的改为使用 AopManager,例如:Aop.addMapping(…) 改为 AopManager.me().addMapping(…)

8、升级到 4.0

无需修改,平滑升级

9、升级到 4.1

无需修改,平滑升级

10、升级到 4.2

无需修改,平滑升级

11、升级到 4.3

无需修改,平滑升级

12、升级到 4.4

无需修改,平滑升级

13、升级到 4.5

默认不支持直接访问 .jsp 文件,如果需要直接访问 .jsp 文件,需添加配置:me.setDenyAccessJsp(false);

14、升级到 4.6

无需修改,平滑升级

15、升级到 4.7

无需修改,平滑升级

16、升级到 4.8

jfinal 4.8 之前的 Controller.getPara(String) 方法,在有表单域存在的时候就不可能返回 null 值,而是返回了 “” 值。jfinal 4.8 版本将之修改为与其它 getXxx 系方法一样,将 “” 处理为 null 值。

需要快速升级老项目的同学,可以引入 BaseController 并使用老版本的实现:

  1. public class BaseController extends Controller {
  2. public String getPara(String name) {
  3. return getRequest().getParameter(name);
  4. }
  5. }

这个方法的具体改变细节见 gitee.com : https://gitee.com/jfinal/jfinal/commit/edfcc0015837ab0b1e6a1f980843ab88815ec1cd

17、升级到 4.9

jfinal 4.9 对 JFinalJson.java 进行了重构,如果以前的项目通过继承 JFinalJson 类做过扩展,需要注意扩展接口有所变动,具体可以参考一下源码中有关扩展的注释,新的扩展接口使用起来比以前要方便得多。

如果项目中使用了 fastjson,最低需要版本为 1.2.68(老版本的 fastjson 有安全隐患)。

如无上述情况可平滑升级。

17、升级到 4.9.01

无需修改,平滑升级

18、升级到 4.9.02

Engine 的 setWriterBufferSize(int) 更名为 setBufferSize(int)

19、升级到 4.9.03

无需修改,平滑升级

20、升级到 4.9.04

无需修改,平滑升级。该版本只修正了 com.jfinal.plugin.redis.Cache.hgetCounter(…) 中的一个 bug。

21、升级到 4.9.05

无需修改,平滑升级。该版本在 Model、Db 中新增了一个 each 方法,新增方法不影响升级

22、升级到 4.9.06

该版本的 MetaBuilder.filter(…) 方法更名为 skip,使用逻辑没有变化。一般很少人用到这个方法,只有用到过这个方法的人才需要修改代码,并且 eclipse、IDEA 开发工具会提示修改。

23、升级到 4.9.07

无需修改,平滑升级

24、升级到 4.9.08

无需修改,平滑升级

25、升级到 4.9.09

无需修改,平滑升级

26、升级到 4.9.10

无需修改,平滑升级

27、升级到 4.9.11

无需修改,平滑升级

28、升级到 4.9.12

不要使用这个版本,模板生成内容会多出一些空行,请使用后续版本

29、升级到 4.9.13

无需修改,平滑升级。

但要注意:由于 PathKit.getWebRootPath() 方法已经被改进,在标准的 maven 项目中已经可以正确获取到 web 根目录,所以将该方法用于 model、base model 生成器的代码注意要改一下,可以将 PathKit.getWebRootPath() 改成下面方式获取项目根目录:

  1. System.getProperty("user.dir")

30、升级到 4.9.14

无需修改,平滑升级

31、升级到 4.9.15

无需修改,平滑升级。注意跨多版本升级要看看升级到 4.9.13 这一小节。

32、升级到 4.9.16

无需修改,平滑升级。

33、升级到 4.9.17

无需修改,平滑升级。

34、升级到 4.9.18

如果用到文件上传 cos 依赖必须升级到 2022.2 版本,因为 getFile 方法的 int maxPostSize 改成了 long。不建议使用该版本,建议至少升级到 4.9.21。

注意:从本版本开始,后续版本文件上传依赖 cos 都要升级至少到 2022.2 版本(int maxPostSize 变量改为了 long 类型)

35、升级到 4.9.19

无需修改,平滑升级。不建议使用该版本,建议至少升级到 4.9.21。

36、升级到 4.9.20

Ret.create(Object,Object) 更名为 Ret.of(Object, Object),Ret.ok(Object, Object)、Ret.fail(Object, Object) 已被删除,可以使用 Ret.ok().set(Object, Object)、Ret.fail().set(Object, Object) 替代。不建议使用该版本,建议至少升级到 4.9.21。

37、升级到 4.9.21

为保持兼容性,恢复了上一版本 4.9.20 中删掉的 Ret.ok(Object, Object)、Ret.fail(Object, Object) 两个方法。

相对于 4.9.18 以及更早版本,升级到本版本,需要改变的是 Ret.create(key, value) 改为 Ret.of(key, value),以及 cos 升级到 2022.2,其它不用动。

注意:不建议使用 4.9.18、4.9.19、4.9.20,而是直接使用 4.9.21,因为该版本针对前面三个版本进行了完善并且兼容老项目,属于本轮迭代的最终版。

38、升级到 5.0.0

无需修改,平滑升级。