赞
踩
历史笔记
拼班服务 GroupServiceImpl.java 中有一个供外部调用的方法;
/**
* 强制调用该方法的地方必须声明事务
*/
@Override
@Transactional(propagation = Propagation.MANDATORY, rollbackFor = Throwable.class)
public void dealTradeEvent(TradeEvent tradeEvent) {
try {
dealTradeEventDetail(tradeEvent);
} catch (Exception e) {
log.error("处理订单事件失败", e);
}
}
现在对 @Transactional
中 propagation 属性做一些学习笔记
public @interface Transactional { // 同 transactionManager @AliasFor("transactionManager") String value() default ""; // 指定事务的限定值 @AliasFor("value") String transactionManager() default ""; // 传播特性 Propagation propagation() default Propagation.REQUIRED; // 隔离级别 Isolation isolation() default Isolation.DEFAULT; // 超时时间 int timeout() default TransactionDefinition.TIMEOUT_DEFAULT; // 只读 boolean readOnly() default false; // 指示哪些异常必须引起事务回滚 Class<? extends Throwable>[] rollbackFor() default {}; // 指示哪些异常类型必须不导致事务回滚。 Class<? extends Throwable>[] noRollbackFor() default {}; }
这里使用的 propagation = Propagation.MANDATORY 只是一种情况,其他还有
支持当前事务
,如果不存在则创建一个新事务;(支持当前事务
即调用当前方法的地方声明的事务)
支持当前事务
,如果不存在则非事务执行
支持当前事务
,如果不存在则抛出异常
创建一个新事务
,如果当前已存在事务则挂起该事务,使用新建的事务
非事务执行
,如果当前已存在事务则暂停该事务
非事务执行
,如果当前已存在事务则抛出异常
如果当前存在事务,则创建一个事务作为当前事务的嵌套事务
来运行;
如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。