Spring 事物传播行为
Spring 中事务的定义:
Propagation(key 属性确定代理应该给哪个方法增加事务行为. 这样的属性最重要的部份是传播行为.) 有以下选项可供使用:
PROPAGATION_REQUIRED: 如果当前有事务, 就用当前事务, 如果当前没有事务, 就新建一个事务. 这是最常见的选择.// 如果外层方法有事务, 就使用外层方法的事务. 如果外层方法没有事务, 则使用内层方法的事务.
PROPAGATION_SUPPORTS: 支持当前事务, 如果当前没有事务, 就以非事务方式执行.// 如果外层方法没有事务, 就会以非事务进行执行.
PROPAGATION_MANDATORY: 支持当前事务, 如果当前没有事务, 就抛出异常. // 如果外层方法没有事务, 内层方法有事务会报错.
PROPAGATION_REQUIRES_NEW: 新建事务, 如果当前存在事务, 把当前事务挂起. // 如果外层方法有事务, 内层方法的事务类型为 (PROPAGATION_REQUIRES_NEW) , 则执行内层方法事务. 如果外层在调用内层方法结束之后方法出错, 不会影响内层事务做的操作.
PROPAGATION_NOT_SUPPORTED: 以非事务方式执行操作, 如果当前存在事务, 就把当前事务挂起.// 如果外层方法有事务, 就会以非事务方式执行.
PROPAGATION_NEVER: 以非事务方式执行, 如果当前存在事务, 则抛出异常.// 如果外层方法有事务, 内部事务也有事务类型为 (PROPAGATION_NEVER), 则报错.
默认传播行为为 REQUIRED
来源: http://www.bubuko.com/infodetail-3059533.html