JFinal是这个星球上最早提出极速开发理念的,也是目前唯一的极速开发框架。自开源以来,迅速获得了开发者的青睐,极速开发的优势也逐渐深入人心。由于极速发展的强大威力,OSChina有以下惊人数据:1:问答数2600,在OSChina收录的37153个项目中排名第五,前四的项目分别是:java、android、php、mysql,前四个项目比JFinal早一到四年被OSChina收录,问答数量充分说明JFinal是OSChina最活跃的项目相关链接:http://www.oschina.comnet/question/tags?catalog=12:git.oschina.net上所有fork、star、watch数据排名***相关链接:http://git.oschina.net/languages/Java3:web框架排名在所有编程语言中按浏览量排名第二个相关链接:http://www.oschina.net/project/tag/127/webframework4:164个与git.oschina.net和JFinal相关的开源项目:http://git.oschina.net/search?utf8=%E2%9C%93&search=jfinal&group_id=&project_id=5:593与JFinal相关的博客相关链接:http://www.oschina.net/search?scope=blog&q=jfinal但是JFinal从未停止过脚步的脚步,JFinal2.0继续专注于极速开发,并将其贯彻到底!从控制层到业务层再到Model层,以后的View层会继续极速!以下是本次版本升级的主要功能:1、极速的业务层AOP支持JFinal2.0提供了对业务层AOP的极速支持,成为地球上第一个支持极速加特效的MVC+ORM+AOP框架,只有Duang.duang(target)需要添加特效,下面是代码示例:1234公共无效pay(){Serviceservice=Duang.duang(Service.class,Tx.class);service.justDoIt(para);}只需要通过Duang.duang(target,interceptors)即可快速为任意目标组件添加特效当然还有更悦耳的用法,比如:?12345publicclassOrderService{@Before(Tx.class)//拦截器的用法和控制层完全一样publicvoidjustDoIt(){}}以上是JFinal粉丝一直钟爱的控制层拦截器用法,现在这个用法可以在业务层使用了,另外还提供了拦截器注入的用法,可以在不侵入目标的情况下为其添加特效,目标可以完全感知不到AOP的存在:?1234567publicvoidaction(){//在控制器中,可以直接使用enhance()enhance(target,interceptors).justDoIt();//其他地方可以使用Enhancer.enhance()Enhancer.enhance(target,interceptors).justDoIt();}JFinal2.0完全支持AOP,并且没有引入IOC容器,所以不需要引入一堆与IOC容器相匹配的XML,也不需要花精力去编写XML,就可以愉快的玩了。SSH时代,到处都是一堆XML,但是没用!2.支持极速redis吗?1234publicvoidplay(){Redis.use().put(key,value);Redis.use().get(key);}代码量依然极少,但在不失功能完整性的前提下,hash、set、zset、list的API保持了redis原有的命名方式,将学习成本降到最低。RedisPlugin可以同时支持多个redis实例,只需要指定cacheName:?1Redis.use("jfinalWeb").put(key,value);8publicvoidplay(){//映射时指定多个主键,以逗号分隔arp.addMapping(tableName,"id1,id2,idn",modelClass);//使用方法,传入多个主键即可model.findById(id1,id2,idn);model.deleteById(id1,id2,idn);}支持任意多个复合主键,不限于两个主键,JFinal会自动判断复合主键个数,避免主键个数不匹配时出错。4.极速Model多数据源多表支持当不同数据源中表结构相同的表需要共享同一个Model时,这个特性非常好用,使用起来还是极速的:?1234publicvoidplay(){//从主数据源获取数据并保存到另一个数据源model.findById(id).use("otherDataSource").save();}当多个数据源的多个表共享同一个Model时使用该特性,如果Model唯一对应某个数据源的某个表,数据源的切换是自动透明的。只用了6行代码就实现了这个功能,JFinal架构的扩展性如此之强。五:Speedi18n支持吗?123456789publicvoidplay(){ResresEn=I18n.use("en_US");StringmsgEn=resEn.get("消息");StringmsgEnFormat=resEn.format("msg","james",newDate());ResresZh=I18n.use("zh_CN");StringmsgZh=resZh.get("消息");StringmsgZhFormat=resZh.format("msg","Jambo",newDate());}在实践的基础上,i18n得到了全面的增强。更极端的用法,请参考JFinal手册。有小伙伴在说,JFinal2.0加了那么多特效,是不是让SSH的人还想继续堆XML呢?没办法,还有更多特效继续冲击:JFinal2.0changelog:1:Speedy业务层AOP支持2:Speedyredis支持3:SpeedyActiveRecord复合主键支持4:SpeedyModel多数据源多表支持5:极速i18n支持6:ActionInvocation更名为Invocation7:ClearInterceptor更名为Clear,并增强功能,支持移除指定拦截器,删除ClearyLayer8:添加Model.findFirstByCache(...),Db.findFirstByCache(...),即方便缓存单个对象,省时省力,节省代码9:Model.findByIdwithStringcolumns参数的方法重命名为findByIdLoadColumns10:删除Db.findByIdwithStringcolumns的方法,可以用Db.findFirst代替11:改进Validator,增加Series方法支持urlPara验证。添加setDatePattern(...)方法指定Date12的模式:Db.batch(...)系列方法添加事务和嵌套事务支持13:添加Config.isInTransaction()方法14:EncryptionKit更名为HashKit,并添加salt值生成方法generateSalt()15:改进Tx拦截器,释放ActionException,使renderError能够正确响应错误码16:添加Sqls工具类,用于加载和使用外部sql文件,例如:User.dao.find(Sqls.get("找到所有”));17:在ActiveRecord中添加SqlServerDialect以支持SqlServer数据库18:添加Controller.getParaValuesToLong(String)方法19:添加OreillyCos.setFileRenamePolicy(...)以支持上传重名文件时的自定义重命名策略20:改进ActionMapping,改为终止启动重复actionKey时输出警告,优化Action映射,进一步提升系统启动速度21:TableBuilder重构,进一步减少代码量,提升性能,提高可读性22:添加com.jfinal.ext.kit.ElResolverListener支持weblogic等容器注册EL增强23:CacheInterceptor添加JsonRender支持24:移除Render类中所有方法的final关键字,更容易扩展自定义渲染25:添加PathKit.setRootClassPath(...)方法,在此类中方便asResin类容器下无法自动检测class目录时使用26:JsonKit和Js的默认转换深度onRender增加到15层27:增加DbKit.removeConfig(...)方法,方便动态管理多个源28:改进JettyServer允许在启动过程中抛出异常终止启动并退出JVM29:改进ActionException支持viewPath30时renderError(...):移除SpringPlugin31:改进PropKit,对多线程更加严格,让PropKit重度用户和代码整洁的工程师更流畅32:改进Controller,urlPara转换错误从500错误改成404错误33:添加Controller.checkUrlPara(...)一系列methodsthatsupportstricturlstoavoidredundanturlsPara34:Tx拦截器开启getConfigWithTxConfig()方法,方便扩展自定义事务拦截器35:改进OneConnectionPerThread支持事务和嵌套拦截36:TxByActionMethods更名为TxByMethods,可用于业务中控制层的拦截layer37:删除Controller和Constants中与i18n相关的代码还有一件事:jfinal.com极速开发平台正在建设中。为感谢JFinal粉丝一如既往的支持,在JFinal2.0发布时,将临时开放第一批用户注册,预注册JFinal极速开发社区账号,成为极速开发社区首批铁杆会员星球,享受速度的快感,共同开启速度发展时代,永远记录速度的历史!只需点击这里:http://www.jfinal.com/reg
