• spring实现事务原理


    spring事务实现主要有两种方法

    1、编程式,beginTransaction()、commit()、rollback()等事务管理相关的方法

    2、声明式,利用注解Transactional 或者aop配置

    xml配置如下所示

     1     <!-- 事务管理器 -->
     2     
     3     <bean id="myTracnsactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     4         <property name="dataSource" ref="dataSource"></property>
     5     </bean>
     6     
     7     <!-- 事务代理工厂 -->
     8     <!-- 生成事务代理对象 -->
     9     <bean id="serviceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    10         <property name="transactionManager" ref="myTracnsactionManager"></property>
    11         <property name="target" ref="buyStockService"></property>
    12         <property name="transactionAttributes">
    13             <props>
    14                 <!-- 主要 key 是方法   
    15                     ISOLATION_DEFAULT  事务的隔离级别
    16                     PROPAGATION_REQUIRED  传播行为
    17                 -->
    18                 <prop key="add*">ISOLATION_DEFAULT,PROPAGATION_REQUIRED</prop>
    19                 <!-- -Exception 表示发生指定异常回滚,+Exception 表示发生指定异常提交 -->
    20                 <prop key="buyStock">ISOLATION_DEFAULT,PROPAGATION_REQUIRED,-BuyStockException</prop>
    21             </props>
    22         </property>
    23         

    @Transactional注解课直接放在class或者method上面,spring容器会在调用时自动将事务织入,相当于代替程序员统一调用编程式事务方法

    需要注意的事spring默认回滚的异常是RuntimeException,如果业务中需要抛出类似于IOException的异常时要修改回滚的异常为Exception,

  • 相关阅读:
    C# Linq 类似Scala中的map的函数
    Spark DataFrame NOT IN实现方法
    Scala scopt 命令行解析
    WPF 绑定到静态属性,可通知
    WPF GroupBox Header居中
    WPF开源项目整理(排名不分先后)
    Windows 上配置 Go 的 gRPC 编译环境
    C++20新线程 jthread 体验代码
    查找被删除但仍然占据磁盘的文件
    以Docker方式安装Redis集群
  • 原文地址:https://www.cnblogs.com/shaozhen/p/11241430.html
Copyright © 2020-2023  润新知