首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring Transaction 4: 使用基于注解的AOP的事务管理

2012-08-30 
Spring Transaction 四: 使用基于注解的AOP的事务管理使用基于注解的AOP的事务管理@Transactional1. 例子T

Spring Transaction 四: 使用基于注解的AOP的事务管理
使用基于注解的AOP的事务管理

@Transactional

1. 例子
Transactional(readOnly = true, propagation=Propagation.REQUIRED)  

@Transactional(propagation=Propagation.REQUIRED)
public TradeData placeTrade(TradeData trade) throws Exception {...}


@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
public TradeData placeTrade(TradeData trade) throws Exception {...}


2. xml 配置

<beans>

<tx:annotation-driven transaction-manager="transactionManager"/>
//使用@Transactional 注解创建恰当的事务管理切面

<aop:aspectj-autoproxy/>// 通知匹配的bean

<beans>



3. <tx:annotation-driven>标签


<tx:annotation-driven>标签是使用注解驱动的事务管理支持的核心, 所有属性如下



transactionManager:  指定到现有的PlatformTransactionManger bean 的引用, 通知会使用该引用

mode: 指定spring事务管理框架创建通知bean的方式,可用的有proxy  和 aspectj, 前者是默认值, 表示通知对象是个jdk代理,后者表示spring aop会使用ajpectj创建代理

order: 指定创建切面的顺序, 只要目标对象有多个通知就可以使用该属性

proxy-target-class: 该属性如果为true , 就表示你想要代理目标类而不是bean 所实现的所有接口



4. @Transactional           

所有属性

propagation: 指定事务定义中使用的传播

isolation: 指定事务的隔离级别

timeout: 超时时间

readonly : 如果为true, 事务标致为只读

noRollbackFor: 目标方法可抛出的异常所构成的数组,但通知仍会提交事务

rollbackFor: 异常所构成的数组,如果目标方法抛出了这些异常,通知就会回滚


5. 缺点

  a. 不的不为所有需要事务的方法加上@Transactional

    b. 把@Transactional 加在整个类上, 不需要事务的方法也运行在事务中

热点排行