zoukankan      html  css  js  c++  java
  • Spring学习笔记——Spring事务仅仅对执行时异常回滚

    我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚。岂不知Spring的事务默认仅仅有在发生执行时异常即:RunTimeException时才会发生事务,假设一个方法抛出Exception或者Checked异常Spring的事务并不会回滚。


    以下我们来看看异常的分类。异常一般分为Checked异常和RunTime异常。


    CheckedException:
    Java觉得Checked异常都是能够被处理的异常,所以Java程序必须显式的处理Checked异常,假设程序没有处理checked异常,程序在编译时候将错误发生。


    我们比較熟悉的Checked异常有
    Java.lang.ClassNotFoundException
    Java.lang.NoSuchMetodException
    java.io.IOException
    RunTimeException:
    Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和执行效率影响非常大。所以由系统自己主动检測并将它们交给缺省的异常处理程序。

    当然假设你有处理要求也能够显示捕获它们。
    我们比較熟悉的RumtimeException类的子类有
    Java.lang.ArithmeticException
    Java.lang.ArrayStoreExcetpion
    Java.lang.ClassCastException
    Java.lang.IndexOutOfBoundsException
    Java.lang.NullPointerException
    我们能够通过以下方式改变事务的默认处理方式:
    在@Transaction注解中定义noRollbackFor和RollbackFor指定某种异常是否回滚。
    @Transaction(noRollbackFor=RuntimeException.class)
    @Transaction(RollbackFor=Exception.class)
    这就要求我们在自己定义异常的时候,让自己定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理。

  • 相关阅读:
    java自带线程池
    SQL 语句学习
    Eclipse 运行内存不足情况
    Eclipse的ant调用maven
    Elipse 无法启动问题(转)
    UI自动化测试实战之Select类实战(四)
    WebElement类方法实战(三)
    WebDriver浏览器属性详解(二)
    服务端测试之gRPC协议测试(一)
    服务端测试实战(一)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7220248.html
Copyright © 2011-2022 走看看