From 0a933787a6a1fc1bfa41461bb2ca4a9e9c6c36f9 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Tue, 3 Mar 2026 16:43:25 +0100 Subject: [PATCH] =?UTF-8?q?Exclude=20legacy=20@=E2=81=A0javax.validation.C?= =?UTF-8?q?onstraint=20from=20attribute=20override=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prior to this commit, we only excluded @⁠jakarta.validation.Constraint from the convention-based annotation attribute override check. This commit additionally excludes the legacy @⁠javax.validation.Constraint annotation from the convention-based annotation attribute override check. See gh-28760 See gh-28761 Closes gh-36412 --- .../core/annotation/AnnotationTypeMapping.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java index ba7892aea15..1263031391e 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java @@ -53,8 +53,10 @@ final class AnnotationTypeMapping { private static final Log logger = LogFactory.getLog(AnnotationTypeMapping.class); - private static final Predicate isBeanValidationConstraint = annotation -> - annotation.annotationType().getName().equals("jakarta.validation.Constraint"); + private static final Predicate isBeanValidationConstraint = annotation -> { + String name = annotation.annotationType().getName(); + return (name.equals("jakarta.validation.Constraint") || name.equals("javax.validation.Constraint")); + }; /** * Set used to track which convention-based annotation attribute overrides