1. 注解方式
- 在service的类名上或方法上增加注解
class TestSrv{
@Before(Tx.class)
public void insertData() {
}
}
注意:
service中的方法不要catch异常,否则不会回滚
- 在action中调用
TestSrv t = enhance(TestSrv.class);
或者
TestSrv t = Enhancer.enhance(TestSrv.class)
或者
TestSrv t = Duang.duang(TestSrv.class);
然后
t.insertData();
2. 拦截器方式
- 配置拦截器
public void configInterceptor(Interceptors interceptors) {
//给service增加事务控制,匹配方法名为开头单词是save、update、delete,后面不限制
interceptors.addGlobalServiceInterceptor(new TxByMethodRegex("(save.*|update.*|delete.*)"));
}
- service的方法不需要加注解,但要注意方法的命名一定要匹配上拦截器的配置,比如:saveUser等
class TestSrv{
public void saveUser() {
}
}
注意:
service中的方法不要catch异常,否则不会回滚
- 在action中调用同注解方式