PlatformTransactionManager
PlatformTransactionManager接口提供commit提交事务功能
public interface PlatformTransactionManager extends TransactionManager {
TransactionStatus getTransaction(@Nullable TransactionDefinition definition)
throws TransactionException;
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
AbstractPlatformTransactionManager
AbstractPlatformTransactionManager继承PlatformTransactionManager接口实现commit功能;
commit中调用processCommit方法;
processCommit方法提供事务执行前置(triggerBeforeCommit)、后置(triggerAfterCommit)、结束(triggerAfterCompletion)等操作,在这些操作中调用TransactionSynchronizationUtils的前置(triggerBeforeCommit)、后置(triggerAfterCommit)、结束(triggerAfterCompletion)等操作;
public abstract class AbstractPlatformTransactionManager implements PlatformTransactionManager, Serializable {
@Override
public final void commit(TransactionStatus status) throws TransactionException {
// 省略部分代码
processCommit(defStatus);
}
private void processCommit(DefaultTransactionStatus status) throws TransactionException {
try {
boolean beforeCompletionInvoked = false;
try {
boolean unexpectedRollback = false;
prepareForCommit(status);
triggerBeforeCommit(status);
triggerBeforeCompletion(status);
beforeCompletionInvoked = true;
// 省略部分代码
}
catch (UnexpectedRollbackException ex) {
// can only be caused by doCommit
triggerAfterCompletion(status, TransactionSynchronization.STATUS_ROLLED_BACK);
throw ex;
}
catch (TransactionException ex) {
// can only be caused by doCommit
if (isRollbackOnCommitFailure()) {
doRollbackOnCommitException(status, ex);
}
else {
triggerAfterCompletion(status, TransactionSynchronization.STATUS_UNKNOWN);
}
throw ex;
}
catch (RuntimeException | Error ex) {
if (!beforeCompletionInvoked) {
triggerBeforeCompletion