• 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,

  • 相关阅读:
    hdu 5015
    hdu 2276
    hdu 6197 array array array LIS
    poj 3070
    codefroce 854 A.Fraction
    sql数据库发布、订阅同步方式操作
    python排序(冒泡、直接选择、直接插入等)
    忘记mysql数据库密码时进行修改方法
    Word中图片自动编号且与文中引用的编号对应
    解决电脑本地网络连接显示红叉又可上网问题
  • 原文地址:https://www.cnblogs.com/shaozhen/p/11241430.html
Copyright © 2020-2023  润新知