小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本次话题将通过三篇博客对自己学习spring的事务属性的五大方面(学习资料☞《spring实战》)的笔记进行整理发布,如果问题,请多担待,如对您学习有所帮助,请点个赞👍吧,♥
摘要
本篇主要让我们来康康,spring事务属性的五大方面其中的“传播行为”这一方面进行具体的详述,
spring声明式事务
spring声明事务式边界的三种方式
- spring AOP 和TransactionProxyFactoryBean的代理Bean来实现声明式事务
- spring的tx命名空间
- @Transactional注解
spring事务属性之☞传播行为
传播行为定义了客户端和被调用方法之间的事务边界,spring定义了7中不同的传播行为
①:PROPAGATION_MANDATORY
表示在spring中定义的这个方法,必须在事务中才可以运行,如果当前事务不存在,那就要抛出一个异常
②:PROPAGATION_REQUIRED
表示当前方法必须运行在事务中,如果当前的事务存在,则会直接运行,如果不存在,就会启动一个新的事务
③: PROPAGATION_NESTED
表示如果当前已经存在一个事务,那么当前的这个方法就会嵌套在已经存在的事务中运行,嵌套的事务可以独立于当前事务进行单独地提交或回滚,如果当前事务不存在,那就会同②中的一样
④: PROPAGATION_NEVER
表示当前方法不应该在事务上下文中,如果当前正在有一个事务在运行,那么就会抛出异常
⑤:PROPAGATION_NOT_SUPPORTED
表示这个方法不应该在事务中运行,如果当前有事务在运行,那么这个方法就会挂起,直到这个事务运行完毕
注:如果使用JTATransactionManagement时,还需要去访问TransactionManagement
⑥:PROPAGATION_REQUIRED_NEW
表示这个方法必须运行在自己的事务中,如果在运行期间,又有一个新的事务进来,那么就会先将这个方法挂起,然后去执行新的事务,执行完之后再执行这个方法
⑦:PROPAGATION_SUPPORTS
表示当前的方法不需要事务上下文,但是如果存在当前事务的话,那么该方法会在这个事务中运行
发布所有博客均为本人学习笔记,如果错误误导了您,请麻烦指出,万分感激!!!