Spring中的@Transactional(rollbackFor=Exception.class)属性解析转载
原创我今天写代码的时候看到了。一张便条@Transactional(rollbackFor = Exception.class)今天,我想和大家分享这个注释的用法;

异常
如下图所示,我们都知道Exception它分为运行时异常。RuntimeException和非运行时异常
error它肯定会卷土重来

如果未处理运行时异常,则在运行时异常发生后,线程中止或主程序终止。
如果不想终止,则必须捕获所有运行时异常,并且永远不要让此处理线程退出。队列中有异常数据。正常处理应该是丢弃异常数据并记录日志。正常数据的处理不应受到异常数据的影响。
非运行时异常是RuntimeException除之外的例外,所有类型都属于Exception类及其子类。这样的IOException、SQLException等等,以及用户定义的Exception例外对于这种异常,JAVA编译器强制我们执行这些发生的异常。catch和处理,否则程序无法编译和传递。因此,面对这种反常,不管我们喜不喜欢,我们只能自己写很多东西。catch块以处理可能的异常。
交易管理方法
事务管理对于企业应用程序来说至关重要,即使在出现异常的情况下也能确保数据的一致性。
spring支持编程和声明式事务管理。
使用程序化事务管理TransactionTemplate或者直接使用底层PlatformTransactionManager对于编程事务管理,spring推荐使用TransactionTemplate。
声明性事务管理基于AOP在上面其本质是在方法前后截取,然后在目标方法启动之前创建或加入事务,并在执行目标方法之后根据执行情况提交或回滚事务。
还有两种常见的声明性事务管理方法,一种基于tx和aop命名空间xml配置文件,另一个基于@Transactional笔记。显然,基于注释的方法更容易使用,也更新鲜。
使用说明
在类上使用时,所有类 public 方法都将具有该类型的事务属性,我们也可以在方法级别使用标签来覆盖类级别的定义。
在该项目中,@Transactional(rollbackFor=Exception.class),如果类添加了此注释,则该类中的方法将抛出异常,数据库中的数据将回滚。
在@Transactional如果未在注释中配置rollbackFor属性,那么事情只会发生RuntimeException只有在以下情况下才会回滚,加上rollbackFor=Exception.class,当遇到非运行时异常时,您可以让事情回滚。
@Transactional注释的所有属性都将详细解释。
@Transactional属性
属性
类型
描述
value
String
指定要使用的事务管理器的可选限定描述符。
propagation
enum: Propagation
可选的事务传播行为设置
isolation
enum: Isolation
可选事务隔离级别设置
readOnly
boolean
读写或只读事务,默认读写。
timeout
int (in seconds granularity)
事务超时设置
rollbackFor
Class对象数组,必须从继承。Throwable
导致事务回滚的异常类数组。
rollbackForClassName
类名数组必须从继承。Throwable
导致事务回滚的异常类名数组。
noRollbackFor
Class对象数组,必须从继承。Throwable
不导致事务回滚的异常类数组。。
noRollbackForClassName
类名数组必须从继承。Throwable
不会导致事务回滚的异常类名数组。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



