package org.nutz.aop.interceptor; import java.sql.Connection; import org.nutz.aop.InterceptorChain; import org.nutz.aop.MethodInterceptor; import org.nutz.lang.Lang; import org.nutz.trans.Atom; import org.nutz.trans.Trans; /** * 可以插入事务的拦截器 * <p/> * 默认事务登记为 Connection.TRANSACTION_READ_COMMITTED * <p/> * 可以在构建拦截器时设置 * * @author wendal(wendal1985@gmail.com) * */ public class TransactionInterceptor implements MethodInterceptor { private int level; public TransactionInterceptor() { this.level = Connection.TRANSACTION_READ_COMMITTED; } public TransactionInterceptor(int level) { this.level = level; } public void filter(final InterceptorChain chain) { Trans.exec(level, new Atom() { public void run() { try { chain.doChain(); } catch (Throwable e) { throw Lang.wrapThrow(e); } } }); } }