Spring学习之事务控制

一、Spring提供的两种事务控制

  • 编程式事务控制:需要自己使用Java的API去写代码
  • 声明式事务控制:只需要配置就可以了

先学编程式事务控制了解原理,之后在使用声明式事务控制时就知道那些参数到底应该如何配置了

编程式事务控制三大对象:

  • PlatformTransactionManager
  • TransactionDefinition
  • TrasactionStatus

Spring的声明式事务控制,就是在配置文件中采用声明的方式来进行事务控制,它的底层其实就是AOP

二、基于xml的事务控制配置

事务控制有个经典案例:转账问题,这里我们的userService对象就有转账的方法,一个转出一个转入,
所以要进行事务控制,另外之前说过Spring的事务控制是用AOP实现的,这个userService就相当于目标对象
而userService的transfer()转账方法就是切点,Advice就是事务增强。

配置的大体流程:平台事务管理器---->事务增强---->织入

<!--目标对象,内部的方法就是切点-->
   <bean id="accountService" class="com.lxl.service.impl.AccountServiceImpl">
       <property name="accountDao" ref="accountDao"/>
   </bean>

   <!--配置一个平台事务管理器-->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
   </bean>

   <!--Advice,事务增强-->
   <tx:advice id="txAdvice" transaction-manager="transactionManager">
       <!--设置事务的属性信息-->
       <tx:attributes>
           <!--name代表方法,可以对每个方法单独配置,或者使用*进行统一配置-->
           <tx:method name="transfer" isolation="DEFAULT" propagation="REQUIRED" timeout="-1"/>
           <!--<tx:method name="*"/>-->
       </tx:attributes> 
   </tx:advice>

   <!--配置AOP:进行事务的织入-->
   <aop:config>
       <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.lxl.service.impl.*.*(..))"/>
   </aop:config>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值