读书人

spring日志(七):声明式事务机制

发布时间: 2013-04-09 16:45:09 作者: rapoo

spring日记(七):声明式事务机制
/>

关于@Transactional的属性:

* propagation:事务传播行为,例如:@Transactional(propagation=Propagation.REQUIRES_NEW)

* isolation:事务隔离级别,例如:@Transactional(isolation=Isolation.READ_COMMITTED)

* readOnly:事务读写性,boolean型

* timeout:超时时间秒

* rollbackFor:一组异常类,遇到就回滚类型为:Class<? extends Throwable>[],默认为{},例如:@Transactional(rollbackFor={SQLException.class, IOException.lcass})

* rollbackForClassNmae:一组异常类名字

* noRollbackFor:一组异常类,遇到不回滚

* noRollbackForClassName:一组异常类型的名字,遇到不回滚

>> 多线程的困惑

单实例Bean的最大好处是线程无关性,不存在多线程并发访问的问题,也就是线程安全的。而一个类能够以单实例的方式运行的前提是无状态,也就是说该类不能有状态化的成员变量。我们知道传统的DAO必须持有一个Connection,而Connection即使状态化的对象。但spring通过ThreadLocal将有状态的变量Connection本地线程化,达到另一个层面上的线程无关从而实现线程安全。

>> 不能被spring AOP事务增强的方法:

基于接口的动态代理了:public之外的所有方法(还包括public static方法)

基于CGLib的动态代理:private、static、final(这个要特别注意了)

读书人网 >开源软件

热点推荐