博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
极速开发,快就是这么任性,你不知道的Jfinal2.0新特性
阅读量:6004 次
发布时间:2019-06-20

本文共 3852 字,大约阅读时间需要 12 分钟。

hot3.png

#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");	}}

###国际化支持 是中国的 才是世界的(使用方法见文档,不想太多解释了)

###新特性初探,就是这样,等明白这个以后,大家可以看看新特性的试用场景,后续视频教程也会更上(前提是,有时间...,木有时间,无限期延后)

转载于:https://my.oschina.net/u/257950/blog/468588

你可能感兴趣的文章
android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
查看>>
AJAX
查看>>
2015 多校联赛 ——HDU5334(构造)
查看>>
mysql字符集
查看>>
DP_1d1d诗人小G
查看>>
非、半、结构化数据学习【转载】
查看>>
avalon加载一闪而过现象
查看>>
Castle IOC概念理解
查看>>
如何配置Log4Net使用Oracle数据库记录日志
查看>>
一道在知乎很火的 Java 题——如何输出 ab【转】
查看>>
Python学习第二天-编写购物车
查看>>
AD域组策略-只显示指定的控制面板选项配置方法
查看>>
BigTable——针对结构型数据的一种分布式存储系统
查看>>
ip通信基础第二周回顾
查看>>
唯美MACD-完全版
查看>>
Canvas中 drawImage绘制图片不显示
查看>>
MyEclipse新建Server项目
查看>>
茵茵的第一课
查看>>
Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
查看>>
PAT 1007
查看>>