spring @transactional原理(spring的transactional注解)
本文分享给大家的是:
我们知道Exception分为运行时异常RuntimeException【程序在运行时暴露的异常】和非运行时异常【也叫检查式异常】我们常见的运行时异常:ClassCastException(类转换异常) 。
IndexOutOfBoundsException(数组越界) NullPointerException(空指针) ArrayStoreException(数据存储异常,操作数组时类型不一致) 还有IO操作的BufferOverflowException异常
非运行时异常就必须得捕获了,否则编译不过去,java编译器要求程序员必须对这种异常进行catch,Java认为Che网站推广怎么推广cked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。
IOException、FileNotFoundExcetion 和SQLExceptionJava把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示:。
ThrowableThrowable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常其中异常Exception分为运行时异常(RuntimeException)和非运行时异常网站推广怎么推广,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。
Error一般是指java虚拟机相关的问题,如系统崩溃、虚拟机出错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该捕获Error对象,也无须在其throws子句中声明该方法抛出任何Error或其子类。
事务管理方式 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性Spring支持编程式事务管理和声明式事务管理两种方式 编程式事务管理使用TransactionTemplate或者直接网站推广怎么推广使用底层的PlatformTransactionManager。
对于编程式事务管理,spring推荐使用TransactionTemplate 声明式事务管理建立在AOP之上的其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解显然基于注解的方式更简单易用,更清爽当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标记来覆盖类级别的定义。
在项目中网站推广怎么推广,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚 。
举报/反馈