码迷,mamicode.com
首页 > 其他好文 > 详细

极速开发,快就是这么任性,你不知道的Jfinal2.0新特性

时间:2015-06-19 01:34:17      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

#Jfinal2.0新特性初探 **Jfinal2.0发布了,我认为这个是里程碑式的发布,新加了不少好功能,这个博文主要是写个那些不想看文档,又想知道Jfinal2.0到底有什么新变动的同学们的,希望你们看完以后,会更加认识Jfinal** ####只要拦截器做的好,没有AOP干不倒 ##Interceptor重现江湖 ###Interceptor细微变化1 ``` public class DemoInterceptor implements Interceptor { public void intercept(Invocation inv) { System.out.println("Before method invoking"); inv.invoke(); System.out.println("After method invoking"); } }public class DemoInterceptor implements Interceptor { public void intercept(Invocation inv) { System.out.println("Before method invoking"); inv.invoke(); System.out.println("After method invoking"); } } ``` * 当前intercept参数由ActionInvocation变成了Invocation * 增强了Invocation中的方法,能够在interceoptor中做更多有意思的事情(在文档AOP中有更加详细的介绍)#Jfinal2.0新特性初探 **Jfinal2.0发布了,我认为这个是里程碑式的发布,新加了不少好功能,这个博文主要是写个那些不想看文档,又想知道Jfinal2.0到底有什么新变动的同学们的,希望你们看完以后,会更加认识Jfinal** ####只要拦截器做的好,没有AOP干不倒 ##Interceptor重现江湖 ###Interceptor细微变化1 public class DemoInterceptor implements Interceptor { public void intercept(Invocation inv) { System.out.println("Before method invoking"); inv.invoke(); System.out.println("After method invoking"); } } * 当前intercept参数由ActionInvocation变成了Invocation * 增强了Invocation中的方法,能够在interceoptor中做更多有意思的事情(在文档AOP中有更加详细的介绍) ###Interceptor细分,引入InjectIntercept新成员 * 以前全局拦截是直接是一个GlobalInteceptor,现在,全局拦截器又细分出两个拦截器:**控制层全局拦截器与业务层全局拦截器**,也就是说,一个是在控制层使用,拦截所有控制层的方法,一个是在业务层的拦截,也就是说,我们以后再业务层理,也可以向控制层那样拦截处理了(喜大普奔吧,骚年们,这不知道要省出多少事情来) * 还新加入了Inject拦截器 ###ClearInterceptor正式更名为Clear * 使用方法类似 只是注解符发生变化 加入项目升级到2.0后,请时刻关注这个更改特性 ###AOP细分 * 控制层 AOP * 业务层 AOP * 业务层拦截器的触发需要先使用 enhance 方法对目标对象进行增强,然后调用目标方法即可(详细请看文档) ``` // 定义需要使用AOP的业务层类 public class OrderService { // 配置事务拦截器 @Before(Tx.class) public void payment(int orderId, int userId) { // service code here } } // 定义控制器,控制器提供了enhance系列方法可对目标进行AOP增强 public class OrderController extends Controller { public void payment() { // 使用 enhance方法对业务层进行增强,使用具有AOP能力 OrderService service = enhance(OrderService.class); // 调用payment方法时将会触发拦截器 service.payment(getParaToInt("orderId"), getParaToInt("userId")); } } ``` ##有DUANG,DUANG特效才叫这酸爽 ####一位新成员 Enhancer 工具类(DUANG) * 作用:用来对目标进行增强,让其拥有 AOP 的能力 **也就是说,如果某个类的业务方法,想拥有业务AOP能力,则可以使用此工具类进行增强** ####又一位新成员 Inject拦截器(DUANG) * Inject 拦截器是指在使用 enhance 方法增强时使用参数传入的拦截器。 Inject 可以对目标完 全无侵入地应用 AOP ``` public void injectDemo() { // 为enhance方法传入的拦截器称为Inject拦截器,下面代码中的Tx称为Inject拦截器 OrderService service = Enhancer.enhance(OrderService.class, Tx.class ); service.payment(…); } ``` * 第二个参数 Tx.class 被称之为 Inject 拦截器,使用此 方法便可完全无侵入地对目标进行 AOP 增强 * **Enhancer+Inject拦截器 ,从此世界上多了一门功夫,叫DUANGDUANG特效** ###多数据源支持(这个在1.9里就有了) * 详细配置,参看文档吧,切换数据源什么的都很方便,直接通过db.use("dataSource").find(...)即可使用不同数据源中的数据 ###非WEB环境里使用ActiveRecord(这个很重要) * 这个问题很多人提出过,现在2.0中直接在文档中写出来了,就不用纠结了,各种环境都是没有压力的),使用如下:###多数据源支持(这个在1.9里就有了) * 详细配置,参看文档吧,切换数据源什么的都很方便,直接通过db.use("dataSource").find(...)即可使用不同数据源中的数据 ###非WEB环境里使用ActiveRecord(这个很重要) * 这个问题很多人提出过,现在2.0中直接在文档中写出来了,就不用纠结了,各种环境都是没有压力的),使用如下: ``` public class ActiveRecordTest { public static void main(String[] args) { DruidPlugin dp = new DruidPlugin("localhost", "userName", "password"); ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); arp.addMapping("blog", Blog.class); // 与web环境唯一的不同是要手动调用一次相关插件的start()方法 dp.start(); arp.start(); // 通过上面简单的几行代码,即可立即开始使用 new Blog().set("title", "title").set("content", "cxt text").save(); Blog.me.findById(123); } } ``` * 写各种测试用例,这个据对OK的(不要说Jfinal不会写测试用例了,Junit加这个,Jfinal的测试用例就绝对可以搞定了) ####我的最爱(RedisPlugin) * 他是作为JfinalPlugin存在,通过使用redis,我们可以构建缓存,并且实现很多Redis的应用,谁说Java只能做业务管理系统,互联网项目,照干不误。加入他和缓存结合起来,我勒个去,这酸爽... ####非web 环境用 使用 RedisPlugin,写各种测试用例,这个据对OK的 ``` public class RedisTest { public static void main(String[] args) { RedisPlugin rp = new RedisPlugin("myRedis", "localhost"); // 与web下唯一区别是需要这里调用一次start()方法 rp.start(); Redis.use().set("key", "value"); Redis.use().get("key"); } } ``` ###国际化支持 是中国的 才是世界的(使用方法见文档,不想太多解释了) ###新特性初探,就是这样,等明白这个以后,大家可以看看新特性的试用场景,后续视频教程也会更上(前提是,有时间...,木有时间,无限期延后)

极速开发,快就是这么任性,你不知道的Jfinal2.0新特性

标签:

原文地址:http://my.oschina.net/u/257950/blog/468588

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!