使用XML Schema配置spring事务管理

Spring支持编程式事务策略和声明式事务策略,但是通常都推荐使用声明式事务策略;

使用声明式事务策略的优势很明显:


	1、声明式事务能大大降低开发者的代码书写量,无论底层事务策略如何变化,应用程序都无需改变
	2、Spring声明式事务管理无需容器的支持,可以在任何环境下使用
	3、通过配置文件,Spring可以指定事务在遇到特定异常时自动回滚
	4、Spring采用AOP的方式管理事务

Spring2.x的XML Schema方式提供了讲解的事务配置策略,使用tx:命名空间来配置事务管理,tx:命名空间下提供了<tx:advice.../>元素来配置事务的增强处理,一旦使用该元素配置了事务增强处理,就可以直接使用<aop:advisor.../>元素启动自动代理了

<tx:advice.../>元素除了需要transaction-manager属性指定事务管理器之外,还需要配置一个<tx:attributes.../>子元素,该子元素里又可包含多个<tx:method.../>子元素,每个<tx:method.../>子元素都为一批方法指定了所需要的事务定义,包括事务的传播属性、事务的隔离属性、事务超时属性、只读事务、对指定异常回滚、对指定异常不回滚等。
<tx:method.../>可以指定如下几个属性:
name:必填属性,与该事务相关联的方法名,支持通配符,eg:'get*','on*Event';
propagation:指定事务的传播行为,默认为Propagation.REQUIRED;
isolation:事务的隔离级别,默认为Isonlation.DEFAULT;
timeout:指定事务超时的时间,单位是秒,指定-1表示不超时,默认值为-1;
read-only:指定事务是否只读,该属性默认为false;
rollback-for:指定触发事务回滚的异常类(要使用全限定类名),该属性可以指定多个异常类,异常类之间用英文逗号隔开;
no-rollback-for:指定不触发事务回滚的异常类(要使用全限定类名),可以指定多个异常,用英文逗号隔开。

<!--配置JDBC数据源的事务管理器,使用DataSourceTransactionManager类-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
     <property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务增强处理bean,并指定事务管理器-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
     <tx:attributes>
  	<tx:method name="get*" read-only="true" rollback-for="exception.NoItemException"
		no-rollback-for="exception.AuctionException"/><!--所有以get开头的方法都是只读的-->
          <tx:method name="*" isolation="DEFAULT" propagation="REQUIRED" timeout="5"/>
     </tx:attributes>
</tx:advice>
<!--AOP配置的元素-->
<aop:config>
     <!--配置一个切入点--></span>
     <aop:pointcut id="myPointcut" expression="execution(* com.whj.springDemo.service.*.*(..))"/>
     <!--指定在myPointcut切入点应用txAdvice事务增强处理--></span>
     <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/>
</aop:config>
tips:如果事务增强处理bean的id是transactionManager,则在配置<tx:advice.../>元素时就可以省略指定transaction-manager属性
使用@Transactional注解配置事务管理
@Transactional注解如果修饰Bean类,则表明事务对整个Bean类起作用;如果修饰的是Bean类中的某个方法,则表明该事物只对该方法有效。
使用@Transactional时可以指定如下属性:
1、isolation:隔离级别
2、noRollbackFor:指定特定异常不回滚
3、noRollbackForClassName:指定多个特定异常不回滚
4、propagation:指定事物传播行为
5、readOnly:事务只读
6、rollBackFor:指定特定异常回滚
7、rollBackForClassName:指定多个特定异常回滚
8、timeout:指定事务超时时长
使用注解时,要在配置文件中开启注解:
<tx:annotation-driven transaction-manager="transactionManager"/>



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值