关于@Transactional注解

1.,MySQL的引擎中只有InnoDB支持事务,而MyISAM引擎不支持事务,更不支持XA协议。
2. @Transactional(value = “tradeTransactionManager”, propagation = Propagation.REQUIRED, noRollbackFor = {NotRollbackException.class}, rollbackFor = {Exception.class})
注:rollbackFor属性是指出现什么异常时发生回滚,默认是发生仅对RuntimeException和 Error发生回滚,noRollbackFor 是指发生指定的异常时不发生回滚,一般会用来指定自己写的异常类
3.propagation事务的传播行为:
什么是Spring事务的传播行为:

所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了如下几个表示传播行为的常量:

TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是默认值。
TransactionDefinition.PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。
TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
TransactionDefinition.PROPAGATION_NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。
举个例子
在这里插入图片描述
4.@Transactional注解的方法必须是公共方法或者public类,就是必须是public修饰符!!!

5.value 是指定事务管理器

在这里插入图片描述

发布了57 篇原创文章 · 获赞 0 · 访问量 4580

猜你喜欢

转载自blog.csdn.net/Arry_Coding/article/details/102657990
今日推荐