zoukankan      html  css  js  c++  java
  • Spring事务注解@Transactional回滚问题

    Spring配置文件,声明事务时,如果rollback-for属性没有指定异常或者默认不写;经测试事务只回滚运行时异常(RuntimeException)和错误(Error)。

    <!-- 配置事务管理器 -->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <!-- 注解方式配置事物 -->
        <!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
    
        <!-- 拦截器方式配置事物 -->
        <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!-- 不添加rollback-for属性,事务只回滚运行时异常(RuntimeException)和错误(Error) -->
                <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
                <tx:method name="add*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    
                <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
                <tx:method name="select*" propagation="SUPPORTS" read-only="true" />
    
            </tx:attributes>
        </tx:advice>
        <!-- Spring aop事务管理 -->
        <aop:config>
            <aop:pointcut id="transactionPointcut"
                expression="execution(* com.lwj.service..*Impl.*(..))" />
            <aop:advisor pointcut-ref="transactionPointcut"
                advice-ref="transactionAdvice" />
        </aop:config>

    Spring API地址:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

    附java异常类Throwable图:

  • 相关阅读:
    Qt Creator 安装SDK,在MSVC编译模式下使用CDB调试器
    QString与std::string的相互转换
    白话代码中的复杂度分析-大O复杂度表示法 时间,空间复杂度分析 最好,最坏,平均复杂度
    QT 如何使窗体初始最大化
    make_ext4fs
    Qt5.4中遇到找不到头文件<QApplication>等
    MariaDB 数据库的备份
    MariaDB -- 数据类型
    MariaDB基础操作
    keepalived + lvs 网站高可用集群
  • 原文地址:https://www.cnblogs.com/lyxy/p/5383197.html
Copyright © 2011-2022 走看看