From fd18c00e50a048c5d357033e61d402f0b01002e8 Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Mon, 30 Aug 2021 13:06:14 +0200 Subject: [PATCH] Optimize for single TransactionSynchronization Optimize TransactionSynchronizationManager.getSynchronizations() to avoid sorting and ArrayList creation in case of a single TransactionSynchronization. See gh-27335 --- .../transaction/support/TransactionSynchronizationManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java index 85cd680ad8b..f7fb0d40c0d 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java @@ -297,6 +297,9 @@ public abstract class TransactionSynchronizationManager { if (synchs.isEmpty()) { return Collections.emptyList(); } + else if (synchs.size() == 1) { + return Collections.singletonList(synchs.iterator().next()); + } else { // Sort lazily here, not in registerSynchronization. List sortedSynchs = new ArrayList<>(synchs);