codecamp

声明式Aop事务

声明式事务

@IocBy(type=ComboIocProvider.class,
    args={"*json","org/nutz/mvc/testapp/classes/ioc",
          "*anno","org.nutz.mvc.testapp.classes",
          "*tx" // 你只需要加上这一行,即可声明5种不同事务级别的拦截器.
    })
public class MainModule {}

// 演示aop事务
@IocBean // 需要aop,那当然需要时ioc的bean
public class UserService {
    @Inject Dao dao; // 注入NutDao实例,必须的,哈哈

    @Aop(TransAop.READ_COMMITTED) // TransAop里面定义5个产量,分别对应不同级别的事务拦截器
    public void add(User user) {
        dao.insert(user);
        dao.update(UserToken.class, Chain.make("xxx","xxx"), Cnd.where(.......);
        // 务必注意,必须抛出异常,才能回滚!! 是抛出,不能被catch吃掉.
    }
}	
AOP -- 在Mvc中的使用
AOP模型 -- NutAop的实现思路
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }