From 50a4fdac6e0a670a227941920d3e08c2e1372b4f Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Sun, 10 May 2020 21:41:00 +0800 Subject: [PATCH] Use Map::computeIfAbsent to simplify scope implementations Closes gh-25038 --- .../springframework/context/support/SimpleThreadScope.java | 7 +------ .../transaction/support/SimpleTransactionScope.java | 7 +------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java b/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java index 0fbbe69bb56..7b469df0ccc 100644 --- a/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java +++ b/spring-context/src/main/java/org/springframework/context/support/SimpleThreadScope.java @@ -67,12 +67,7 @@ public class SimpleThreadScope implements Scope { @Override public Object get(String name, ObjectFactory objectFactory) { Map scope = this.threadScope.get(); - Object scopedObject = scope.get(name); - if (scopedObject == null) { - scopedObject = objectFactory.getObject(); - scope.put(name, scopedObject); - } - return scopedObject; + return scope.computeIfAbsent(name, k -> objectFactory.getObject()); } @Override diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java b/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java index 58effc4329f..38c93de5b35 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionScope.java @@ -50,12 +50,7 @@ public class SimpleTransactionScope implements Scope { TransactionSynchronizationManager.registerSynchronization(new CleanupSynchronization(scopedObjects)); TransactionSynchronizationManager.bindResource(this, scopedObjects); } - Object scopedObject = scopedObjects.scopedInstances.get(name); - if (scopedObject == null) { - scopedObject = objectFactory.getObject(); - scopedObjects.scopedInstances.put(name, scopedObject); - } - return scopedObject; + return scopedObjects.scopedInstances.computeIfAbsent(name, k -> objectFactory.getObject()); } @Override