• 抛出自定义异常,spring AOP事务不回滚的解决方案


    Spring AOP 默认对RuntimeException()异常或是其子类进行事务回滚,也就是说

    事务回滚:throw new RuntimeException("xxxxxxxxxxxx"); 

    事物不回滚:throw new Exception("xxxxxxxxxxxx"); 

    那么,如何在抛出Exception或者自定义异常时,事务也进行回滚呢?有以下几种方案:

    1、在捕获到异常或者显示的抛出 RuntimeException

    2、手动回滚----在捕获到异常或者显示的抛出自定义异常前,加一段代码:

    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    3、在AOP的配置文件中,添加如下信息:

    <tx:method name="add*" propagation="REQUIRED" rollback-for="com.xxx.xxx.xxxException"/>

          这样,在抛出自定义异常时,就会进行事务的回滚了

    小结:

    方法1:在做测试时比较方便,放在业务中无法区分具体的错误信息

    方法2:在个别业务处理或者调试代码时使用,放在代码中不方便维护,每个异常都需要增加。

    方法3:适合业务开发,也符合AOP的理念。将事务控制和业务分离
    ---------------------

    原文:https://blog.csdn.net/xueyepiaoling/article/details/50828522

    自古英雄出炼狱,从来富贵入凡尘。
  • 相关阅读:
    u-boot编译
    本地套接字
    内核线程
    长度为0数组
    Ubuntu安装KScope
    Python基础-运算符
    如何有效地记录 Java SQL 日志?
    解谜谷歌 DevOps:什么特质可以打造世界级可靠系统?
    如何打造前所未有的服务器端监控体验?
    趣味Python入门(一):初识Python
  • 原文地址:https://www.cnblogs.com/yunliu0603/p/10697165.html
Copyright © 2020-2023  润新知