diff --git a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java index 181dc1c497..4a27351b4c 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java @@ -200,9 +200,15 @@ public class BindingReflectionHintsRegistrar { } private void registerHintsForClassAttributes(ReflectionHints hints, MergedAnnotation annotation) { - annotation.getRoot().asMap().values().forEach(value -> { + annotation.getRoot().asMap().forEach((key,value) -> { if (value instanceof Class classValue && value != Void.class) { - hints.registerType(classValue, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); + if (key.equals("builder")) { + hints.registerType(classValue, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, + MemberCategory.INVOKE_DECLARED_METHODS); + } + else { + hints.registerType(classValue, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); + } } }); } diff --git a/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java b/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java index 1ca33d1bf0..36cf25dfac 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java @@ -287,7 +287,8 @@ class BindingReflectionHintsRegistrarTests { bindingRegistrar.registerReflectionHints(this.hints.reflection(), SampleRecordWithJacksonCustomStrategy.class); assertThat(RuntimeHintsPredicates.reflection().onType(PropertyNamingStrategies.UpperSnakeCaseStrategy.class).withMemberCategory(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)) .accepts(this.hints); - assertThat(RuntimeHintsPredicates.reflection().onType(SampleRecordWithJacksonCustomStrategy.Builder.class).withMemberCategory(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)) + assertThat(RuntimeHintsPredicates.reflection().onType(SampleRecordWithJacksonCustomStrategy.Builder.class) + .withMemberCategories(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)) .accepts(this.hints); }