经常在osc看到jfinal自吹自擂,说自己如何配置简单,好奇的下载了一份3.0的文档,打开一看,惊呆了,创建个空项目竟然可以如此复杂,要自己改web.xml,这真的是2017年的框架吗?更离奇的是,还有一堆人觉得它极简。
快速上手一点都不快速,然后继续看JFinalConfig这一章,初看,路由配置倒是跟springboot的类似,再往下一看,omg,配个连接池还要自己new C3p0Plugin,这在springboot里可都是开箱即用的啊。
再看第三章Controller,不用写很多annatation是个优点,但是在接收请求参数的时候,开了倒车,竟然要写Blog blog = getModel(Blog.class);,自己去取参数,而不是由框架自动注入,虽然并没有明显增加工作量,但是比自动注入还是麻烦了点。
再看第四章AOP,跟springboot中的用法差不多,不分高下。
再看第五章AR,c3p0的麻烦配置就不重复吐槽了。继续往下看,“基于 ActiveRecord的 Model 无需定义属性,无需定义 getter、setter 方法,无需 XML 配置,无需 Annotation 配置, 极大降低了代码量”。我深深的怀疑自己是不是穿越回2005年了,没有属性定义的model,不就失去IDE的自动补全功能了吗?难道entity还要像过去那样写XML配置吗?难道Annotation还要自己手写?不都是从数据库反向自动生成的吗?降低的只是自动生成的代码量,并没有减少人的工作。
再看事务处理,又开倒车了,@Transactional是javax中标准注解,就算没用过的,看名字也能猜到意思了。说到事务,立刻会联想到isolation level和propagation,这么重要的东西,jfinal再次沉默。
再看db dialect支持,连pgsql都不支持!连pgsql都不支持!连pgsql都不支持!
继续往下看,“JFinal ActiveRecord 天然支持表关联操作,并不需要学习新的东西,此为无招胜有招。”不支持自动连表也就算了,手写SQL并不可耻,功能弱多写代码,竟然成了无招胜有招。跟spring-data相比,我只能说,jfinal的db使用也太麻烦了吧。
再往下看模板引擎,基本功能还算齐全。现在后端偏向吐数据,模板是前端的事情了,因此简单跳过。
继续往下看,就是几个plugin的用法了,比开箱即用的springboot麻烦好多。
想往下找如何管理依赖注入,如何写日志,如何与常见的一堆库集成,可惜文档到此结束了,没有哎。
我个人的结论就是,与上百楼的赞誉和标榜简单,毫不相称,只能当作一个玩具项目来看待,从Contributor列表看,几乎没有社区参与。在reddit和stackoverflow等社区,也基本上没有提起它,难道用户们都不上英文社区?不过也可以理解,我们公司的框架发布新闻的时候,也有一堆同事去顶,还刷过几次英文社区的屏呢,呵呵。