From dcd776270cd485f76222cfe90daf51cb5a748220 Mon Sep 17 00:00:00 2001 From: shenjianeng Date: Wed, 6 May 2026 11:28:43 +0800 Subject: [PATCH] Refactor regex pattern caching using computeIfAbsent Signed-off-by: shenjianeng --- .../expression/spel/ast/OperatorMatches.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/OperatorMatches.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/OperatorMatches.java index 19cbf43a4486..5127419238fd 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/OperatorMatches.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/OperatorMatches.java @@ -98,12 +98,10 @@ public BooleanTypedValue getValueInternal(ExpressionState state) throws Evaluati } try { - Pattern pattern = this.patternCache.get(regex); - if (pattern == null) { - checkRegexLength(regex); - pattern = Pattern.compile(regex); - this.patternCache.putIfAbsent(regex, pattern); - } + Pattern pattern = this.patternCache.computeIfAbsent(regex, key -> { + checkRegexLength(key); + return Pattern.compile(key); + }); Matcher matcher = pattern.matcher(new MatcherInput(input, new AccessCount())); return BooleanTypedValue.forValue(matcher.matches()); }