文档章节

JFinal aop事务 RegTxInterceptor示例

绝望的八皮
 绝望的八皮
发布于 2012/07/06 11:36
字数 191
阅读 391
收藏 3

声明事务或者编程事务让代码太分散了,使用aop方式的事务更容易维护一点,稍微写了个示例给大家提供个思路,作者说下个版本(目前是1.0.8)将会加入类似的支持。 

  在你的JFinalConfig中注册。

public void configInterceptor(Interceptors me) {

me.add(new RegTxInterceptor("正则表达式"));

}

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.sql.SQLException;
import java.util.regex.Pattern;

import com.jfinal.aop.Interceptor;
import com.jfinal.core.ActionInvocation;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.IAtom;

public class RegTxInterceptor implements Interceptor {
	private String regex;

	public RegTxInterceptor(String regex) {
		this.regex = regex;
	}

	public void intercept(final ActionInvocation ai) {

		if (!Pattern.compile(regex).matcher(express(ai)).matches()) {
			ai.invoke();
		}
		Db.tx(new IAtom() {
			public boolean run() throws SQLException {
				try {
					ai.invoke();
				} catch (Exception e) {
					e.printStackTrace();
					return false;
				}
				return true;
			}
		});

	}

	private String express(ActionInvocation ai) {
		Class clazz = ai.getController().getClass();
		Method method = ai.getMethod();
		String className = clazz.getName();
		String modifierName = Modifier.toString(method.getModifiers());
		return modifierName + " " + className + "." + method.getName();
	}

	public String getReg() {
		return regex;
	}

	public void setReg(String reg) {
		this.regex = reg;
	}

}

© 著作权归作者所有

共有 人打赏支持
绝望的八皮

绝望的八皮

粉丝 389
博文 22
码字总数 10505
作品 2
其它
CTO(技术副总裁)
加载中

评论(1)

JFinal
JFinal
JFinal下一版打算引入这个扩展,也是由于你那天在群里面提出的需求。再次感谢你提出这样好的需求。另外,你上面的代码可能有个 bug,第 21 行的 ai.invoke()后面应该加一个 return。最后建议第 20 行的compile提取出来,只需编译一次就可以了,提高性能 :)
JAVA 极速WEB+ORM框架 - JFinal

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、p...

JFinal
2012/03/18
0
496
Jboot v1.4.9 发布,核心 JFinal 升级到 3.4 最新版本

Jboot 是一个基于 JFinal 和 Undertow 开发的微服务框架。提供了 AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、Opentracing 数据追踪、metrics 数据监控、分布式 session、代码生...

理工男海哥
05/03
0
0
JFinal 3.4 发布,将极速贯彻到 UI 层

jfinal 的终极目标是全面实现软件开发整个过程的极速开发,极大提升开发效率,极大降低学习成本,极大提升开发体验 jfinal 诞生头五年,已实现 WEB + ORM + AOP 层面的极速开发,赢得了大量开...

JFinal
04/28
0
129
最近在做的一件事件编写JFinal教程《Jfinal极速开发实战》

从8月1号开始,整整一个月,初稿完成,朋友帮我第一次文字校对完成,现在正在根据波总的意见修改一些jfinal的设计原则说明 Jfinal、JfinalUIB学习交流QQ群:309647612 已经完成,前四章免费阅...

littleant
2015/08/20
0
12
OSC上关于Jfinal的提问整理(二)

1.【问】:Db.tx(new IAtom())事务不起作用? 【jfinal答】:1:如果使用的mysql,确保引擎为 InnoDB 2:这行代码改一下Db.save(c3p0Plugin.getDataSource(), "tbtest", "PKID", record);去掉...

木川瓦兹
2013/04/25
0
2

没有更多内容

加载失败,请刷新页面

加载更多

android引入jar的一个错误

使用eclipse+sdk开发android的app,如果要引入一个jar包,可以放到./libs/xxx.jar路径下就可以了。今天引入一个aaa.jar的包,也放到./libs/aaa.jar路径下。app编译没有问题,但一运行就如下的...

kyle960
16分钟前
0
0
django修改密码强制退出机制

起因 BUG出现 系统升级django版本后经常出现自动退出登录 问题复现 系统升级django(大版本,如1.8、1.11和2.0)后,旧版与新版同时运行,同一各User用旧版authenticate验证后会导致新版中已...

张豪飞
24分钟前
0
0
SylixOS异常管理

异常管理   SylixOS提供了一种平台无关的异常管理方法。当系统产生了写时拷贝、缺页等MMU访问失效异常或其他种类异常时,SylixOS会在异常中构建异常处理线程执行陷阱,在异常退出后的任务上...

huikai309
25分钟前
0
0
Java HashMap 初始化赋值 (不建议)

1、HashMap 初始化的文艺写法 看完这段代码,很多人都会觉得这么写太啰嗦了,文艺青年一般这么来了: HashMap<String, String> map = new HashMap<String, String>() { { put("name", "test"...

SuShine
29分钟前
1
0
Lvs与Keepalived集群

一、LVS安装 1、[root@localhost ~]# yum install -y ipvsadm 2、[root@localhost ~]# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 执行如下命令来应用: [root@localhost ~]# sysctl -p ......

freelb
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部