项目jfinal1.9升级到jfinal4.9.01

刚把手上项目从jfinal1.9升级到jfinal4.9.01,基本平滑,主要做了几点小修改,本来没啥好分享的,或许也有老用户担心不兼容,放弃升级,在这里算做个成功的试验。

分享下:

  1. ClearInterceptor,原版本com.jfinal.aop.ClearInterceptor=>com.jfinal.aop.Clear

  2. Interceptor中public void intercept(ActionInvocation ai) =>public void intercept(Invocation ai) {

  3. com.jfinal.aop.ClearLayer干掉,新版没有了

  4. com.jfinal.config.Routes中getEntrySet()=>getRouteItemList(),Route中直接getControllerKey()、getControllerClass()

  5. Validator中validateString直接干掉第二个boolean参数

  6. JFinalConfig继承类中public void configConstant(Constants me),增加一句me.setViewType(ViewType.FREE_MARKER);//因原项目使用freemarker模版引擎

  7. dao.findById中,以前支持(id,"字段名"),现在改为findByIdLoadColumns(id,"字段名")

  8. 最后,引用最新的UndertowServer,导入jar包、配置文件,老版本com.jfinal.core.JFinal.start("WebRoot", 80, "/", 5);删除UndertowServer.create(XXX.class, "undertow.properties").start();

  9. @杜福忠遇到一真正Jfinal深度研究员,提醒漏掉了文件上传类中的方法:com.jfinal.upload.UploadFile  getSaveDirectory()=>getUploadPath()

  10. 还有个Logger就不说了,按自己要求改下。


 


   补充下:没增加第6点中的内容时,遇到个错误The multiline comment start block "#--" ,因为默认用Enjoy的引擎去解析了。

com.jfinal.template.stat.ParseException: The multiline comment start block "#--" can not match the end block: "--#"
Template: "/index/index.html". Line: 8
	at com.jfinal.template.stat.Lexer.scanMultiLineComment(Lexer.java:366)
	at com.jfinal.template.stat.Lexer.scan(Lexer.java:71)
	at com.jfinal.template.stat.Parser.parse(Parser.java:76)
	at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:167)
	at com.jfinal.template.Engine.getTemplate(Engine.java:148)
	at com.jfinal.render.TemplateRender.render(TemplateRender.java:62)
	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:111)



评论区

JFinal

2020-08-07 15:36

你创造了 jfinal 跨版本升级记录: 跨 23 个版本

这 23 个版本中, 多数版本改进升级的功能与特性都在 40 至 50 个,能跨越这么多个版本升级的原因是我在 jfinal 俱乐部视频中反复强调的:极简设计

jfinal 在 9 年前就坚持的极简设计,其 Handler、Interceptor、Controller、Render、Plugin 内核结构 9 年不变,轻松应对这 9 年来各种千奇百怪的需求

你本次跨 23 个版本升级 jfinal,其中第一、第三条本质是改类名:ClearInteceptor 改为 Clear
第二条也是改类名:ActionInvocation 改为 Invocation
第六条是改默认配置

绝大部分改动是改名类或方法名,这种改动 eclipse 会有错误提示,升级起来很安全,不会漏掉

真正切实有兼容性影响的是第 7 条中 dao.findById 改为findByIdLoadColumns(id,"字段名")

第 8 条不叫改动,是将原来的 jetty-server 换成使用 jfinal-undertow

点赞加收藏

SuperEric

2020-08-07 18:20

@JFinal 是的,Eclipse的Replace轻松搞定。

糊搞

2020-08-07 19:30

我去,我在想是不是也拿出N年前写的“小白的第一个JFinal程序”,升级一下

happyboy

2020-08-07 20:01

看到这个标题,我笑嘻嘻的点进来了。

杜福忠

2020-08-07 21:18

我记得还有两个变化,代码处理的比较多,一个是日志,一个是文件上传好像,当时菜鸡的很,看见eclipse满屏报错慌得一批。。。

SuperEric

2020-08-07 22:26

@杜福忠 佩服,兄弟你真心是jfinal忠实粉,服你!!文件确实上传还有个不一样。getSaveDirectory(),Log那个就不说了。引入或修改掉就好了。

SuperEric

2020-08-07 22:30

@happyboy @糊搞 很有必要升级,不为别的,程序员的快感不一样。

JFinal

2020-08-08 00:07

初始 jfinal @杜福忠 同学是菜鸟一枚,跟进到 3.0 就经成长为高手

关注 jfinal 动向,研究设计思想,理解源码,进步就是这么神速

时间投资到 jfinal 是值得的

JFinal

2020-08-08 00:08

@SuperEric 跟着升级文档走会更全面, jfinal undertow 是完美支持 jfinal 所有版本的,本质上也支持所有其它基于 servlet 开发的 java 项目

JFinal

2020-08-08 00:09

@糊搞 升级的这个项目规模并不小,2011 年启动的创业项目,迭代到 2013 年才停止

如果只是 N 年前写的 "小白的第一个JFinal程序" ,那没有必要拿来分享

idreamblue

2020-08-10 10:17

@JFinal JFinal马上要迎来5.x了吧,给大家伙说下5.x和以后的路线图吧。我们都很期待ing。

杜福忠

2020-08-12 16:56

@JFinal 2016年研究上JFinal没多久, 我就升职加薪, 当上总经理, 出任CEO。现在就差迎娶白富美, 走上人生巅峰啦!

JFinal

2020-08-12 18:05

@杜福忠 长远来看,希望你做出改变世界的产品出来

短期来看,起码得做出让世界更美好些的产品