Browse Source

Minor refactoring in AbstractPlatformTransactionManager

See gh-24493
pull/24570/head
陈其苗 6 years ago committed by Rossen Stoyanchev
parent
commit
a09f02f64e
  1. 38
      spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java

38
spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -25,6 +25,7 @@ import org.apache.commons.logging.Log; @@ -25,6 +25,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.Constants;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.transaction.IllegalTransactionStateException;
import org.springframework.transaction.InvalidTimeoutException;
@ -370,12 +371,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran @@ -370,12 +371,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
logger.debug("Creating new transaction with name [" + def.getName() + "]: " + def);
}
try {
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = newTransactionStatus(
def, transaction, true, newSynchronization, debugEnabled, suspendedResources);
doBegin(transaction, def);
prepareSynchronization(status, def);
return status;
return openNewTransaction(def, transaction, debugEnabled, suspendedResources);
}
catch (RuntimeException | Error ex) {
resume(null, suspendedResources);
@ -393,6 +389,20 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran @@ -393,6 +389,20 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
}
}
/**
* Open a new transaction with transaction definition.
*/
@NonNull
private TransactionStatus openNewTransaction(TransactionDefinition def, Object transaction,
boolean debugEnabled, @Nullable SuspendedResourcesHolder suspendedResources) {
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = newTransactionStatus(
def, transaction, true, newSynchronization, debugEnabled, suspendedResources);
doBegin(transaction, def);
prepareSynchronization(status, def);
return status;
}
/**
* Create a TransactionStatus for an existing transaction.
*/
@ -422,12 +432,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran @@ -422,12 +432,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
}
SuspendedResourcesHolder suspendedResources = suspend(transaction);
try {
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, true, newSynchronization, debugEnabled, suspendedResources);
doBegin(transaction, definition);
prepareSynchronization(status, definition);
return status;
return openNewTransaction(definition, transaction, debugEnabled, suspendedResources);
}
catch (RuntimeException | Error beginEx) {
resumeAfterBeginException(transaction, suspendedResources, beginEx);
@ -457,12 +462,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran @@ -457,12 +462,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
// Nested transaction through nested begin and commit/rollback calls.
// Usually only for JTA: Spring synchronization might get activated here
// in case of a pre-existing JTA transaction.
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, true, newSynchronization, debugEnabled, null);
doBegin(transaction, definition);
prepareSynchronization(status, definition);
return status;
return openNewTransaction(definition, transaction, debugEnabled, null);
}
}

Loading…
Cancel
Save