Avoid duplicate required attribute lookup for @⁠Autowired annotations

This commit revises AutowiredAnnotationBeanPostProcessor so that
determineRequiredStatus(MergedAnnotation<?>) only looks up the required
attribute once.

Closes gh-36314
This commit is contained in:
Sam Brannen
2026-02-12 12:41:21 +01:00
parent 926bcbd9a6
commit 4abbddf601
@@ -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
* <p>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<Boolean> requiredAttribute = ann.getValue(this.requiredParameterName, Boolean.class);
return (requiredAttribute.isEmpty() || this.requiredParameterValue == requiredAttribute.get());
}
/**