1、PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务,如果不存在,则创建一个事务。
方法A执行时,会看看是否在一个事务中,在事务中的话就直接使用当前事务,不在的话就创建一个新事务。
2、PROPAGATION_REQUIRED_NEW:新建一个事务,挂起当前事务(如果存在),最后用新建的事务执行
方法A执行时,如果发现自己在一个事务B中,会先挂起当前事务B,然后新建一个事务C,方法A在事务C中执行,当事务C执行完成后,才会继续执行事务B
3、PROPAGATION_SUPPORT:如果存在事务,则支持当前事务,如果不存在事务,则以非事务方式执行。
方法A执行时,如果发现自己在事务中,则方法A以事务形式执行,否则就以非事务形式执行
4、PROPAGATION_NOT_SUPPORT:如果存在事务,则挂起事务,最后都以非事务方式执行。
方法A执行时,如果发现自己在事务B中,则挂起事务B,然后以非事务形式执行方法A,最后再执行事务B
5、PROPAGATION_NEVER:以非事务方式执行,如果存在事务,则抛出异常。
方法A执行时,如果发现自己在事务中,就抛出异常,否则就以非事务形式执行方法
6、PROPAGATION_MANDATORY:如果当前有事务,则支持当前事务,如果没有事务,则抛出异常。
方法A执行时,如果发现自己在事务中,刚在当前事务中执行,如果发现没有事务,则会招聘异常。
7、PROPAGATION_NESTED:支持当前事务,但会新建一个节点,与当前事务共同提交或回滚。
方法A执行时,发现自己在事务B中,会建立一个子事务C,然后方法A在事务C中执行,但事务C随着事务B提交(回滚)而提交(回滚)