皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

JFinal 3.2 发布,星星之火已成燎原之势

JFinal 3.2 发布,星星之火已成燎原之势

JFinal第一版于2011年3月诞生于公司内部,应用于公司项目后大受欢迎,一年后于2012年3月18日选择在OSChina社区开源。

历经6年工匠精神的打磨,现已进化成生机勃勃的生态系统,星星之火已成燎原之势。

1:jfinal.com极速开发社区注册用户达66036人

JFinal 极速开发社区于2016年6月正式上线,一年两个月零两天的时间注册用户已达66036人,作为一个没有公司支持,也没有任何外部资源支持的个人开源项目,仅凭一已之力干到这个程度,已经是奇迹。

相关链接:http://jfinal.com/share/1

JFinal 3.2 发布,星星之火已成燎原之势

假定中国的java开发者一共有20万人,按照当前的发展速度,明年的这个时间点JFinal将覆盖到全体中国java开发者的66.03%。具有网络效应的项目在网络节点达到某个临界值时,发展速度将呈指数级爆发性增长,如果注册用户过十万需要两年,但达到20万人很可能只需两年半。

有人问我为啥一直对开发、升级jfinal一直保有激情,一直在不知疲倦、十分耐心地回复无数小白的小白问题,一图胜千言,下面这个截图是最好的回答:

JFinal 3.2 发布,星星之火已成燎原之势

每天下班后我会看一遍当天注册用户,看着一个个鲜活的nickName,激情立即满满的,小伙伴们对jfinal的喜爱才是开发、升级下去的根本逻辑与源动力,否则如果面对的是一个乏人问津的项目,任何一个正常人都不可能对此保有六年的激情。

2:git.oschina.net 上 fork、star 数据排名第一

相关链接:http://git.oschina.net/languages/Java

3:问答数4226个,在OSChina 在收录的44246个项目中总排名第五

排前四位的项目分别是:java、android、php、mysql,前四个项目在 OSChina 的收录时间比 JFinal 要早一到四年。超过2008年就已被OSChina收录的Spring。问答数量充分表明JFinal是OSChina十分活跃的项目

相关链接:http://www.oschina.net/question/tags?catalog=1

4:git.oschina.net 与 JFinal 相关开源项目 689 个

该数字是JFinal 2.0版本发布时的4.2倍,相关链接:

http://git.oschina.net/search?utf8=%E2%9C%93&search=jfinal&group_id=&project_id=&type=

5:与 JFinal 相关博客 1039 篇

该数字是JFinal 2.0版本发布时的1.75倍:

https://www.oschina.net/search?scope=blog&q=jfinal

6:社区累计捐助人数达1526人

有不少小伙伴是多次捐助,有位昵称叫“杜福忠”的小伙伴甚至每个月捐助一次。

jfinal 从来没有在任何时间、任何地点推动或宣传过捐助的事情,所有捐助者是因为jfinal的口碑自发而来,这样得来的数据才能真实反馈出jfinal的口碑。

相关链接:http://www.jfinal.com/donate

以上是坚守六年多的工匠精神,超过一千多项的功能增强与改进,帮助无数小白所取得的成果,但jfinal追求极速开发的脚步从未停止过,以下是JFinal 3.2 的主要增强与改进:

1:action支持形参注入

public void action(Article article, int id) {
   ...
}

action 形参注入早在两年就实现过,只不过当时认为实现不够简洁,学习成本也有一定的上升,在正式发布之前删除了此功能。action形参注入有利于与 swagger 之类的框架集成。

该功能模块由社区大神 @玛雅牛 贡献,实现非常简洁有力,便于扩展。 @玛雅牛 还贡献过 BaseModel 生成这类重类级的功能模块,极大地推动了 JFinal 发展进程,非常感谢 @玛雅牛 的贡献

2:模板引擎支持spring、spring boot

<bean id="viewResolver" class="com.jfinal.template.ext.spring.JFinalViewResolver">
  <!-- 是否热加载模板文件 -->
  <property name="devMode" value="true"/>
  <!-- 配置shared function,多文件用逗号分隔 -->
  <property name="sharedFunction" value="/view/_layout.html"/>

  <!-- 是否支持以 #(session.value) 的方式访问 session -->
  <property name="sessionInView" value="true"/>
  <property name="prefix" value="/view/"/>
  <property name="suffix" value=".html"/>
  <property name="order" value="1"/>
  <property name="contentType" value="text/html; charset=utf-8"/>
</bean>

如上所示配置一个简单的bean即可,spring boot 的配置方式见jfinal手册

此外,JFinal Template Engine 已被独立发布为Enjoy项目,集成spring时可以直接使用enjoy 3.2,只有171KB的大小,并且无第三方依赖,传送门:http://git.oschina.net/jfinal/enjoy

3:添加ClassPathSource支持从class path及jar包读取模板文件

engine.setSourceFactory(new ClassPathSourceFactory());

通过上面一行代码,即可配置engine从class path加载模板文件,如果未找到则去jar包中加载,非常适合spring boot下面使用。

4:模板引擎添加extension method功能

public class MyIntegerExt {
  public Integer square(Integer self) {
    return self * self;
  }
}

engine.addExtensionMethod(Integer.class, MyInteger.class);

上面的代码即实现了类似于ruby中的mixin功能,为 Integer 添加一个求平方的功能,在模板中可以通过 123.square() 来调用这个方法。得益于jfinal的极简设计,实现上述功能只用了 87行代码。

5:ActiveRecordPlugin支持自动类型转换

int count = Db.queryInt("select count(*) from account");

以上代码,JDBC会返回 Long 型数值,所以在老版本jfinal中会出现类型转换异常,3.2版本对此做了自动类型转换。此外,对于Model、Record、DbPro中所有涉及String、int、long、float、double、short等类型都做了类型转换处理,使用 3.2 版本会无比顺滑。

6:添加 IDbProFactory,支持继承 DbPro 来定制 DbPro 功能 

public class MyDbPro extends DbPro {
  ....
}

arp.setDbProFactory(new MyDbProFactory() {
  public DbPro getDbPro() {
    return new MyDbPro();
  }
});

通过如上代码即可对 DbPro 的功能进行定制与扩展。

7:文件上传支持input域使用同名name属性

使用该功能,只需要将 cos 升级到 2017.5 版本即可。

JFinal早已不是六年前的星星之火了,仍未尝试过jfinal朋友们如果还不试着改变一下,开发速度会被后起新生代小鲜肉远远甩在后面,尝试jfinal的成本十分之低,仅仅两万多行代码实现了完整的MVC + ORM + AOP + Template Engine,这一切全被浓缩在了一个jar包之中。

ONE MORE THING:JFinal 3.2 有近50项增强与改进,篇幅所限在此不在赘述。JFinal俱乐部将在本周六晚9点直播讲解3.2的新功能,加入俱乐部相约周六晚直播间,我们不见不散:http://jfinal.com/club

 

转自 http://www.oschina.net/news/87553/jfinal-3-2