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

#Jfinal2.0新特性初探 Jfinal2.0发布了,我认为这个是里程碑式的发布,新加了很多好功能,这个博文主要是写个那些不想看文档,又想知道Jfinal2.0到底有什么新变更的同窗们的,但愿大家看完之后,会更加认识Jfinalweb

####只要拦截器作的好,没有AOP干不倒 ##Interceptor重现江湖 ###Interceptor细微变化1redis

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新成员app

  • 之前全局拦截是直接是一个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特效才叫这酸爽ui

####一位新成员 Enhancer 工具类(DUANG)插件

  • 做用:用来对目标进行加强,让其拥有 AOP 的能力 也就是说,若是某个类的业务方法,想拥有业务AOP能力,则可使用此工具类进行加强

####又一位新成员 Inject拦截器(DUANG)code

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

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

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

相关文章
相关标签/搜索