From a09f02f64e89edd88d5c6a6e0e23f290d0461efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=85=B6=E8=8B=97?= Date: Sun, 9 Feb 2020 15:32:23 +0800 Subject: [PATCH] Minor refactoring in AbstractPlatformTransactionManager See gh-24493 --- .../AbstractPlatformTransactionManager.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java b/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java index 5a11d8f2201..c27156a33ca 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java @@ -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; 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 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 } } + /** + * 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 } 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 // 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); } }