zoukankan      html  css  js  c++  java
  • (八)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 的思想 ,对我们配置的方法,进行了增强,使用了事务,底层可能使用了 环绕通知

  • 相关阅读:
    如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites]
    JS 传播事件、取消事件默认行为、阻止事件传播
    脚本化CSS类-HTML5 classList属性
    offset、client、scroll开头的属性归纳总结
    使用insertBefore实现insertAdjacentHTML()
    HTML5 数据集属性dataset
    圣杯布局与双飞翼布局
    Lazyload Angular
    MongoDB学习笔记
    HTML5调用电脑摄像头拍照
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665685.html
Copyright © 2011-2022 走看看