文档章节

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;
	}

}

© 著作权归作者所有

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

绝望的八皮

粉丝 391
博文 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.5 发布,将能上的菜先上了

jfinal 新功能经过 6 个月的酝酿、开发,在大幅度的创新来临之前,jfinal 3.5 这一版先稳一稳,趁着国庆长假,将能上的菜先上了。 jfinal 3.5 这一版针对这 6 个月以来用户反馈最强烈、最频繁...

JFinal
10/08
0
80
JFinal-event v2.2.2 发布,支持JFinal 3.5 新版本inject

JFinal-event 2.x 参考Spring 4.2.x中Event的使用方式而生,为JFinal用户带来更多方便。 更新情况: 2018-10-09 v2.2.2 升级到jfinal 3.5 (不兼容老版本)支持新版本inject,升级到java 8优化...

如梦技术
10/09
0
0
JFinal 3.4 发布,将极速贯彻到 UI 层

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

JFinal
04/28
0
129

没有更多内容

加载失败,请刷新页面

加载更多

Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
44分钟前
1
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
48分钟前
2
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
1
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
3
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部