(八)Spring 事务管理

目录

#Spring 的事务管理

  1. 编程式事务管理一般不用

    所谓编程式,就是我们自己写代码,实现事务管理,这样还不如不用框架呢;

  2. 声明式事务管理

    1. 基于 xml 配置文件实现
    2. 基于注解实现

Spring 事务管理 Api 介绍之 PlatformTransactionManager

几个 api 中,最重要的一个 ;

PlatformTransactionManager(事务管理器 )

  1. 对于该接口,Spring 针对不同的持久层技术,提供了不同的实现版本;

    JDBC、iBatis 对应的实现类:org.springframework.jdbc.datasource.DataSourceTransactionManager

    Hibernate5 对应的实现类:org.springframework.orm.hibernate5.HibernateTransactionManager

  2. 配置事务管理器(配置文件方式

      <!--添加 tx 约束-->
      xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation=
        "http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx.xsd"
    
    	----------------------------------------------------	
    
    <!--配置事务管理器-->
     <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager">
         <!--注入数据源-->
         <property name="dataSource" ref="dataSource"></property>
     </bean>
    
    	----------------------------------------------------	
    
       <!--配置事务增强-->
        <tx:advice transaction-manager="dataSourceTransactionManager" id="interceptor">
            <tx:attributes>
                <!--设置增强规则 countXXX方法-->
                <!--设置隔离性-->
                <tx:method name="count*" propagation="MANDATORY"/>
            </tx:attributes>
        </tx:advice>
    
    	----------------------------------------------------	
    
        <!--配置切面-->
        <aop:config>
            <!--配置切入点-->
            <aop:pointcut id="point1" expression="execution(* ijava.xin.aop.UserDao.*(..))"></aop:pointcut>
            <!--配置切面-->
            <!--增强对象,和切入点对象-->
            <aop:advisor advice-ref="interceptor" pointcut-ref="point1"></aop:advisor>
        </aop:config>
    
  3. 配置事务管理器(注解方式

      <!--添加 tx 约束-->
      xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation=
        "http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx.xsd"
    
    	----------------------------------------------------	
    
        <!--配置事务管理器-->
         <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager">
             <!--注入数据源-->
             <property name="dataSource" ref="dataSource"></property>
         </bean>
    	
    	----------------------------------------------------	
    	
            <!--开启事务注解-->
        <tx:annotation-driven transaction-manager="dataSourceTransactionManager"></tx:annotation-driven>
    
    
    

    最后在想要开启事务的方法所在类上,写注解 @Transactional ;然后 spring 就会寻找写了该注解的类,为其方法,都开启事务


这2个,基本不用啥,主要是上面的 事务管理器 ;
  • TransactionDefinition (事务定义信息)
  • TransactionStatus(事务具体运行状态)

后记

spring 的事务管理,还是使用了 aop 的思想 ,对我们配置的方法,进行了增强,使用了事务,底层可能使用了 环绕通知

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值