From 4abbddf6010fb1aab8dd943d3948ba598c8260d0 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Thu, 12 Feb 2026 12:41:21 +0100 Subject: [PATCH] =?UTF-8?q?Avoid=20duplicate=20`required`=20attribute=20lo?= =?UTF-8?q?okup=20for=20@=E2=81=A0Autowired=20annotations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit revises AutowiredAnnotationBeanPostProcessor so that determineRequiredStatus(MergedAnnotation>) only looks up the required attribute once. Closes gh-36314 --- .../annotation/AutowiredAnnotationBeanPostProcessor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index 8d97f4e3dad..4163e101eb7 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -33,6 +33,7 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -621,12 +622,12 @@ public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationA *
A 'required' dependency means that autowiring should fail when no beans
* are found. Otherwise, the autowiring process will simply bypass the field
* or method when no beans are found.
- * @param ann the Autowired annotation
+ * @param ann a {@link MergedAnnotation} representing the Autowired annotation
* @return whether the annotation indicates that a dependency is required
*/
protected boolean determineRequiredStatus(MergedAnnotation> ann) {
- return (ann.getValue(this.requiredParameterName).isEmpty() ||
- this.requiredParameterValue == ann.getBoolean(this.requiredParameterName));
+ Optional