diff --git a/integration-tests/src/test/java/org/springframework/aot/test/ReflectionInvocationsTests.java b/integration-tests/src/test/java/org/springframework/aot/test/ReflectionInvocationsTests.java index fd7822b6b45..541025c19c1 100644 --- a/integration-tests/src/test/java/org/springframework/aot/test/ReflectionInvocationsTests.java +++ b/integration-tests/src/test/java/org/springframework/aot/test/ReflectionInvocationsTests.java @@ -33,7 +33,7 @@ class ReflectionInvocationsTests { @Test void sampleTest() { RuntimeHints hints = new RuntimeHints(); - hints.reflection().registerType(String.class, hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); RuntimeHintsInvocations invocations = RuntimeHintsRecorder.record(() -> { SampleReflection sample = new SampleReflection(); @@ -45,8 +45,8 @@ class ReflectionInvocationsTests { @Test void multipleCallsTest() { RuntimeHints hints = new RuntimeHints(); - hints.reflection().registerType(String.class, hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); - hints.reflection().registerType(Integer.class, hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); + hints.reflection().registerType(Integer.class,MemberCategory.INTROSPECT_PUBLIC_METHODS); RuntimeHintsInvocations invocations = RuntimeHintsRecorder.record(() -> { SampleReflection sample = new SampleReflection(); sample.multipleCalls(); // does Method[] methods = String.class.getMethods(); methods = Integer.class.getMethods(); 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 cc509b3b117..2154610858f 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 @@ -36,7 +36,6 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Consumer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -47,8 +46,6 @@ import org.springframework.aot.generate.GeneratedMethod; import org.springframework.aot.generate.GenerationContext; import org.springframework.aot.generate.MethodReference; import org.springframework.aot.hint.ExecutableMode; -import org.springframework.aot.hint.FieldHint; -import org.springframework.aot.hint.FieldMode; import org.springframework.aot.hint.RuntimeHints; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeansException; @@ -914,10 +911,6 @@ public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationA private static final String INSTANCE_PARAMETER = "instance"; - private static final Consumer ALLOW_WRITE = builder -> builder - .withMode(FieldMode.WRITE); - - private final Class target; private final Collection autowiredElements; @@ -987,7 +980,7 @@ public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationA private CodeBlock generateMethodStatementForField(Field field, boolean required, RuntimeHints hints) { - hints.reflection().registerField(field, ALLOW_WRITE); + hints.reflection().registerField(field); CodeBlock resolver = CodeBlock.of("$T.$L($S)", AutowiredFieldValueResolver.class, (!required) ? "forField" : "forRequiredField", field.getName()); diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBeanRuntimeHints.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBeanRuntimeHints.java index 26ed71a8cdd..daf2b17d358 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBeanRuntimeHints.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBeanRuntimeHints.java @@ -16,8 +16,6 @@ package org.springframework.scheduling.quartz; -import java.util.function.Consumer; - import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; @@ -45,13 +43,14 @@ class SchedulerFactoryBeanRuntimeHints implements RuntimeHintsRegistrar { if (!ClassUtils.isPresent(SCHEDULER_FACTORY_CLASS_NAME, classLoader)) { return; } - Consumer typeHint = type -> type - .withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS) - .onReachableType(SchedulerFactoryBean.class); hints.reflection() - .registerType(TypeReference.of(SCHEDULER_FACTORY_CLASS_NAME), typeHint) + .registerType(TypeReference.of(SCHEDULER_FACTORY_CLASS_NAME), this::typeHint) .registerTypes(TypeReference.listOf(ResourceLoaderClassLoadHelper.class, - LocalTaskExecutorThreadPool.class, LocalDataSourceJobStore.class), typeHint); + LocalTaskExecutorThreadPool.class, LocalDataSourceJobStore.class), this::typeHint); this.reflectiveRegistrar.registerRuntimeHints(hints, LocalTaskExecutorThreadPool.class); } + + private void typeHint(Builder typeHint) { + typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS).onReachableType(SchedulerFactoryBean.class); + } } diff --git a/spring-context/src/main/java/org/springframework/context/aot/BindingReflectionHintsRegistrar.java b/spring-context/src/main/java/org/springframework/context/aot/BindingReflectionHintsRegistrar.java index c75612dbecb..066d5f5d08b 100644 --- a/spring-context/src/main/java/org/springframework/context/aot/BindingReflectionHintsRegistrar.java +++ b/spring-context/src/main/java/org/springframework/context/aot/BindingReflectionHintsRegistrar.java @@ -80,20 +80,20 @@ public class BindingReflectionHintsRegistrar { if (clazz.isPrimitive() || clazz == Object.class) { return; } - hints.registerType(clazz, builder -> { + hints.registerType(clazz, typeHint -> { if (seen.contains(type)) { return; } seen.add(type); if (shouldRegisterMembers(clazz)) { if (clazz.isRecord()) { - builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); + typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); for (RecordComponent recordComponent : clazz.getRecordComponents()) { registerRecordHints(hints, seen, recordComponent.getAccessor()); } } else { - builder.withMembers( + typeHint.withMembers( MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); try { diff --git a/spring-core-test/src/test/java/org/springframework/aot/agent/InstrumentedMethodTests.java b/spring-core-test/src/test/java/org/springframework/aot/agent/InstrumentedMethodTests.java index d5a063e3b8d..60f100ea8a4 100644 --- a/spring-core-test/src/test/java/org/springframework/aot/agent/InstrumentedMethodTests.java +++ b/spring-core-test/src/test/java/org/springframework/aot/agent/InstrumentedMethodTests.java @@ -55,39 +55,37 @@ class InstrumentedMethodTests { void classForNameShouldMatchReflectionOnType() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_FORNAME) .withArgument("java.lang.String").returnValue(String.class).build(); - hints.reflection().registerType(String.class, typeHint -> { - }); + hints.reflection().registerType(String.class); assertThatInvocationMatches(InstrumentedMethod.CLASS_FORNAME, invocation); } @Test void classGetClassesShouldNotMatchReflectionOnType() { - hints.reflection().registerType(String.class, typeHint -> { - }); + hints.reflection().registerType(String.class); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETCLASSES, this.stringGetClasses); } @Test void classGetClassesShouldMatchPublicClasses() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_CLASSES)); + hints.reflection().registerType(String.class, MemberCategory.PUBLIC_CLASSES); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCLASSES, this.stringGetClasses); } @Test void classGetClassesShouldMatchDeclaredClasses() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_CLASSES)); + hints.reflection().registerType(String.class, MemberCategory.DECLARED_CLASSES); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCLASSES, this.stringGetClasses); } @Test void classGetDeclaredClassesShouldMatchDeclaredClassesHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_CLASSES)); + hints.reflection().registerType(String.class, MemberCategory.DECLARED_CLASSES); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDCLASSES, this.stringGetDeclaredClasses); } @Test void classGetDeclaredClassesShouldNotMatchPublicClassesHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_CLASSES)); + hints.reflection().registerType(String.class, MemberCategory.PUBLIC_CLASSES); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETDECLAREDCLASSES, this.stringGetDeclaredClasses); } @@ -96,8 +94,7 @@ class InstrumentedMethodTests { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASSLOADER_LOADCLASS) .onInstance(ClassLoader.getSystemClassLoader()) .withArgument(PublicField.class.getCanonicalName()).returnValue(PublicField.class).build(); - hints.reflection().registerType(PublicField.class, builder -> { - }); + hints.reflection().registerType(PublicField.class); assertThatInvocationMatches(InstrumentedMethod.CLASSLOADER_LOADCLASS, invocation); } @@ -127,25 +124,25 @@ class InstrumentedMethodTests { @Test void classGetConstructorShouldMatchInstrospectPublicConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTOR, this.stringGetConstructor); } @Test void classGetConstructorShouldMatchInvokePublicConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTOR, this.stringGetConstructor); } @Test void classGetConstructorShouldMatchIntrospectDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTOR, this.stringGetConstructor); } @Test void classGetConstructorShouldMatchInvokeDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTOR, this.stringGetConstructor); } @@ -159,43 +156,43 @@ class InstrumentedMethodTests { @Test void classGetConstructorShouldMatchInvokeConstructorHint() { hints.reflection().registerType(String.class, typeHint -> - typeHint.withConstructor(Collections.emptyList(),ExecutableMode.INVOKE)); + typeHint.withConstructor(Collections.emptyList(), ExecutableMode.INVOKE)); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTOR, this.stringGetConstructor); } @Test void classGetConstructorsShouldMatchIntrospectPublicConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTORS, this.stringGetConstructors); } @Test void classGetConstructorsShouldMatchInvokePublicConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTORS, this.stringGetConstructors); } @Test void classGetConstructorsShouldMatchIntrospectDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTORS, this.stringGetConstructors); } @Test void classGetConstructorsShouldMatchInvokeDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETCONSTRUCTORS, this.stringGetConstructors); } @Test void classGetDeclaredConstructorShouldMatchIntrospectDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDCONSTRUCTOR, this.stringGetDeclaredConstructor); } @Test void classGetDeclaredConstructorShouldNotMatchIntrospectPublicConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETDECLAREDCONSTRUCTOR, this.stringGetDeclaredConstructor); } @@ -215,19 +212,19 @@ class InstrumentedMethodTests { @Test void classGetDeclaredConstructorsShouldMatchIntrospectDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDCONSTRUCTORS, this.stringGetDeclaredConstructors); } @Test void classGetDeclaredConstructorsShouldMatchInvokeDeclaredConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDCONSTRUCTORS, this.stringGetDeclaredConstructors); } @Test void classGetDeclaredConstructorsShouldNotMatchIntrospectPublicConstructorsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETDECLAREDCONSTRUCTORS, this.stringGetDeclaredConstructors); } @@ -271,13 +268,13 @@ class InstrumentedMethodTests { @Test void classGetDeclaredMethodShouldMatchIntrospectDeclaredMethodsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDMETHOD, this.stringGetScaleMethod); } @Test void classGetDeclaredMethodShouldNotMatchIntrospectPublicMethodsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETDECLAREDMETHOD, this.stringGetScaleMethod); } @@ -299,79 +296,79 @@ class InstrumentedMethodTests { @Test void classGetDeclaredMethodsShouldMatchIntrospectDeclaredMethodsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDMETHODS, this.stringGetScaleMethod); } @Test void classGetDeclaredMethodsShouldMatchInvokeDeclaredMethodsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETDECLAREDMETHODS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDMETHODS, invocation); } @Test void classGetDeclaredMethodsShouldMatchIntrospectPublicMethodsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETDECLAREDMETHODS, this.stringGetScaleMethod); } @Test void classGetMethodsShouldMatchInstrospectDeclaredMethodsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETMETHODS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHODS, invocation); } @Test void classGetMethodsShouldMatchInstrospectPublicMethodsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETMETHODS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHODS, invocation); } @Test void classGetMethodsShouldMatchInvokeDeclaredMethodsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETMETHODS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHODS, invocation); } @Test void classGetMethodsShouldMatchInvokePublicMethodsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETMETHODS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, hint -> hint.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_PUBLIC_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHODS, invocation); } @Test void classGetMethodsShouldNotMatchForWrongType() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETMETHODS).onInstance(String.class).build(); - hints.reflection().registerType(Integer.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(Integer.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETMETHODS, invocation); } @Test void classGetMethodShouldMatchInstrospectPublicMethodsHint() throws NoSuchMethodException { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetToStringMethod); } @Test void classGetMethodShouldMatchInvokePublicMethodsHint() throws NoSuchMethodException { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_PUBLIC_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetToStringMethod); } @Test void classGetMethodShouldMatchInstrospectDeclaredMethodsHint() throws NoSuchMethodException { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetToStringMethod); } @Test void classGetMethodShouldMatchInvokeDeclaredMethodsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INVOKE_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetToStringMethod); } @@ -391,19 +388,19 @@ class InstrumentedMethodTests { @Test void classGetMethodShouldNotMatchInstrospectPublicMethodsHintWhenPrivate() throws Exception { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetScaleMethod); } @Test void classGetMethodShouldMatchInstrospectDeclaredMethodsHintWhenPrivate() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + hints.reflection().registerType(String.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetScaleMethod); } @Test void classGetMethodShouldNotMatchForWrongType() { - hints.reflection().registerType(Integer.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + hints.reflection().registerType(Integer.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETMETHOD, this.stringGetToStringMethod); } @@ -445,7 +442,7 @@ class InstrumentedMethodTests { @Test void classGetDeclaredFieldShouldMatchDeclaredFieldsHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + hints.reflection().registerType(String.class, MemberCategory.DECLARED_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDFIELD, this.stringGetDeclaredField); } @@ -457,41 +454,39 @@ class InstrumentedMethodTests { @Test void classGetDeclaredFieldShouldMatchFieldHint() { - hints.reflection().registerType(String.class, typeHint -> typeHint.withField("value", builder -> { - })); + hints.reflection().registerType(String.class, typeHint -> typeHint.withField("value")); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDFIELD, this.stringGetDeclaredField); } @Test void classGetDeclaredFieldsShouldMatchDeclaredFieldsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETDECLAREDFIELDS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + hints.reflection().registerType(String.class, MemberCategory.DECLARED_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETDECLAREDFIELDS, invocation); } @Test void classGetDeclaredFieldsShouldNotMatchPublicFieldsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETDECLAREDFIELDS).onInstance(String.class).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_FIELDS)); + hints.reflection().registerType(String.class, MemberCategory.PUBLIC_FIELDS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETDECLAREDFIELDS, invocation); } @Test void classGetFieldShouldMatchPublicFieldsHint() { - hints.reflection().registerType(PublicField.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_FIELDS)); + hints.reflection().registerType(PublicField.class, MemberCategory.PUBLIC_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETFIELD, this.getPublicField); } @Test void classGetFieldShouldMatchDeclaredFieldsHint() { - hints.reflection().registerType(PublicField.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + hints.reflection().registerType(PublicField.class, MemberCategory.DECLARED_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETFIELD, this.getPublicField); } @Test void classGetFieldShouldMatchFieldHint() { - hints.reflection().registerType(PublicField.class, typeHint -> typeHint.withField("field", builder -> { - })); + hints.reflection().registerType(PublicField.class, typeHint -> typeHint.withField("field")); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETFIELD, this.getPublicField); } @@ -499,7 +494,7 @@ class InstrumentedMethodTests { void classGetFieldShouldNotMatchPublicFieldsHintWhenPrivate() throws NoSuchFieldException { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETFIELD) .onInstance(String.class).withArgument("value").returnValue(null).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_FIELDS)); + hints.reflection().registerType(String.class, MemberCategory.PUBLIC_FIELDS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETFIELD, invocation); } @@ -507,7 +502,7 @@ class InstrumentedMethodTests { void classGetFieldShouldMatchDeclaredFieldsHintWhenPrivate() throws NoSuchFieldException { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETFIELD) .onInstance(String.class).withArgument("value").returnValue(String.class.getDeclaredField("value")).build(); - hints.reflection().registerType(String.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + hints.reflection().registerType(String.class, MemberCategory.DECLARED_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETFIELD, invocation); } @@ -515,7 +510,7 @@ class InstrumentedMethodTests { void classGetFieldShouldNotMatchForWrongType() throws Exception { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETFIELD) .onInstance(String.class).withArgument("value").returnValue(null).build(); - hints.reflection().registerType(Integer.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + hints.reflection().registerType(Integer.class, MemberCategory.DECLARED_FIELDS); assertThatInvocationDoesNotMatch(InstrumentedMethod.CLASS_GETFIELD, invocation); } @@ -523,7 +518,7 @@ class InstrumentedMethodTests { void classGetFieldsShouldMatchPublicFieldsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETFIELDS) .onInstance(PublicField.class).build(); - hints.reflection().registerType(PublicField.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_FIELDS)); + hints.reflection().registerType(PublicField.class, MemberCategory.PUBLIC_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETFIELDS, invocation); } @@ -531,7 +526,7 @@ class InstrumentedMethodTests { void classGetFieldsShouldMatchDeclaredFieldsHint() { RecordedInvocation invocation = RecordedInvocation.of(InstrumentedMethod.CLASS_GETFIELDS) .onInstance(PublicField.class).build(); - hints.reflection().registerType(PublicField.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + hints.reflection().registerType(PublicField.class, MemberCategory.DECLARED_FIELDS); assertThatInvocationMatches(InstrumentedMethod.CLASS_GETFIELDS, invocation); } diff --git a/spring-core/src/main/java/org/springframework/aot/hint/annotation/SimpleReflectiveProcessor.java b/spring-core/src/main/java/org/springframework/aot/hint/annotation/SimpleReflectiveProcessor.java index 6d4d87277a5..974981d4106 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/annotation/SimpleReflectiveProcessor.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/annotation/SimpleReflectiveProcessor.java @@ -55,7 +55,7 @@ public class SimpleReflectiveProcessor implements ReflectiveProcessor { * @param type the class to process */ protected void registerTypeHint(ReflectionHints hints, Class type) { - hints.registerType(type, hint -> {}); + hints.registerType(type); } /** diff --git a/spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHints.java b/spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHints.java index 393483346b6..9d8318e438d 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHints.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHints.java @@ -18,7 +18,6 @@ package org.springframework.aot.hint.support; import java.util.List; import java.util.Map; -import java.util.function.Consumer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -26,7 +25,6 @@ import org.apache.commons.logging.LogFactory; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; -import org.springframework.aot.hint.TypeHint; import org.springframework.core.io.support.SpringFactoriesLoader; import org.springframework.core.log.LogMessage; import org.springframework.lang.Nullable; @@ -45,9 +43,6 @@ class SpringFactoriesLoaderRuntimeHints implements RuntimeHintsRegistrar { private static final List RESOURCE_LOCATIONS = List.of(SpringFactoriesLoader.FACTORIES_RESOURCE_LOCATION); - private static final Consumer HINT = builder -> - builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); - private static final Log logger = LogFactory.getLog(SpringFactoriesLoaderRuntimeHints.class); @@ -78,7 +73,7 @@ class SpringFactoriesLoaderRuntimeHints implements RuntimeHintsRegistrar { if (logger.isTraceEnabled()) { logger.trace(LogMessage.format("Processing factories for [%s]", factoryClassName)); } - hints.reflection().registerType(factoryClass, HINT); + hints.reflection().registerType(factoryClass, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); for (String implementationClassName : implementationClassNames) { Class implementationType = resolveClassName(classLoader, implementationClassName); if (logger.isTraceEnabled()) { @@ -87,7 +82,7 @@ class SpringFactoriesLoaderRuntimeHints implements RuntimeHintsRegistrar { implementationClassName)); } if (implementationType != null) { - hints.reflection().registerType(implementationType, HINT); + hints.reflection().registerType(implementationType, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); } } } diff --git a/spring-core/src/test/java/org/springframework/aot/hint/ReflectionHintsTests.java b/spring-core/src/test/java/org/springframework/aot/hint/ReflectionHintsTests.java index 14bd8fc4d48..5c831323886 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/ReflectionHintsTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/ReflectionHintsTests.java @@ -73,8 +73,7 @@ class ReflectionHintsTests { @Test void getTypeUsingTypeReference() { - this.reflectionHints.registerType(String.class, - hint -> hint.withMembers(MemberCategory.DECLARED_FIELDS)); + this.reflectionHints.registerType(String.class, MemberCategory.DECLARED_FIELDS); assertThat(this.reflectionHints.getTypeHint(TypeReference.of(String.class))).satisfies( typeWithMemberCategories(String.class, MemberCategory.DECLARED_FIELDS)); } @@ -87,7 +86,7 @@ class ReflectionHintsTests { @Test void registerTypeReuseBuilder() { this.reflectionHints.registerType(TypeReference.of(String.class), - typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); Field field = ReflectionUtils.findField(String.class, "value"); assertThat(field).isNotNull(); this.reflectionHints.registerField(field); @@ -100,8 +99,7 @@ class ReflectionHintsTests { @Test void registerClass() { - this.reflectionHints.registerType(Integer.class, - hint -> hint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + this.reflectionHints.registerType(Integer.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertThat(this.reflectionHints.typeHints()).singleElement().satisfies( typeWithMemberCategories(Integer.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); } @@ -117,7 +115,7 @@ class ReflectionHintsTests { @Test void registerTypesApplyTheSameHints() { this.reflectionHints.registerTypes(TypeReference.listOf(Integer.class, String.class, Double.class), - hint -> hint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + TypeHint.builtWith(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); assertThat(this.reflectionHints.typeHints()) .anySatisfy( typeWithMemberCategories(Integer.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)) @@ -180,8 +178,8 @@ class ReflectionHintsTests { void registerFieldWithCustomizersCannotDowngradeWrite() { Field field = ReflectionUtils.findField(TestType.class, "field"); assertThat(field).isNotNull(); - this.reflectionHints.registerField(field, fieldHint -> fieldHint.withMode(FieldMode.WRITE)); - this.reflectionHints.registerField(field, fieldHint -> fieldHint.withMode(FieldMode.READ)); + this.reflectionHints.registerField(field, FieldMode.WRITE); + this.reflectionHints.registerField(field, FieldMode.READ); assertTestTypeFieldHint(fieldHint -> { assertThat(fieldHint.getName()).isEqualTo("field"); assertThat(fieldHint.getMode()).isEqualTo(FieldMode.WRITE); diff --git a/spring-core/src/test/java/org/springframework/aot/hint/RuntimeHintsTests.java b/spring-core/src/test/java/org/springframework/aot/hint/RuntimeHintsTests.java index cf4e95342c8..9e87fe500eb 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/RuntimeHintsTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/RuntimeHintsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,8 +33,7 @@ class RuntimeHintsTests { @Test void reflectionHintWithClass() { - this.hints.reflection().registerType(String.class, - hint -> hint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + this.hints.reflection().registerType(String.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertThat(this.hints.reflection().typeHints()).singleElement().satisfies(typeHint -> { assertThat(typeHint.getType().getCanonicalName()).isEqualTo(String.class.getCanonicalName()); assertThat(typeHint.fields()).isEmpty(); diff --git a/spring-core/src/test/java/org/springframework/aot/hint/annotation/ReflectiveRuntimeHintsRegistrarTests.java b/spring-core/src/test/java/org/springframework/aot/hint/annotation/ReflectiveRuntimeHintsRegistrarTests.java index 30ed0542fc7..2e515a80401 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/annotation/ReflectiveRuntimeHintsRegistrarTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/annotation/ReflectiveRuntimeHintsRegistrarTests.java @@ -279,8 +279,7 @@ class ReflectiveRuntimeHintsRegistrarTests { @Override protected void registerMethodHint(ReflectionHints hints, Method method) { super.registerMethodHint(hints, method); - hints.registerType(method.getReturnType(), type -> - type.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + hints.registerType(method.getReturnType(), MemberCategory.INVOKE_DECLARED_METHODS); } } diff --git a/spring-core/src/test/java/org/springframework/aot/hint/predicate/ReflectionHintsPredicatesTests.java b/spring-core/src/test/java/org/springframework/aot/hint/predicate/ReflectionHintsPredicatesTests.java index dfbe7de03f1..2407af90576 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/predicate/ReflectionHintsPredicatesTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/predicate/ReflectionHintsPredicatesTests.java @@ -66,81 +66,77 @@ class ReflectionHintsPredicatesTests { @Test void reflectionOnClassShouldMatchIntrospection() { - runtimeHints.reflection().registerType(SampleClass.class, builder -> {}); + runtimeHints.reflection().registerType(SampleClass.class); assertPredicateMatches(reflection.onType(SampleClass.class)); } @Test void reflectionOnTypeReferenceShouldMatchIntrospection() { - runtimeHints.reflection().registerType(SampleClass.class, builder -> {}); + runtimeHints.reflection().registerType(SampleClass.class); assertPredicateMatches(reflection.onType(TypeReference.of(SampleClass.class))); } @Test void reflectionOnDifferentClassShouldNotMatchIntrospection() { - runtimeHints.reflection().registerType(Integer.class, builder -> {}); + runtimeHints.reflection().registerType(Integer.class); assertPredicateDoesNotMatch(reflection.onType(TypeReference.of(SampleClass.class))); } @Test void typeWithMemberCategoryFailsWithNullCategory() { - runtimeHints.reflection().registerType(SampleClass.class, builder -> - builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatIllegalArgumentException().isThrownBy(() -> reflection.onType(SampleClass.class).withMemberCategory(null)); } @Test void typeWithMemberCategoryMatchesCategory() { - runtimeHints.reflection().registerType(SampleClass.class, - builder -> builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateMatches(reflection.onType(SampleClass.class) .withMemberCategory(MemberCategory.INTROSPECT_PUBLIC_METHODS)); } @Test void typeWithMemberCategoryDoesNotMatchOtherCategory() { - runtimeHints.reflection().registerType(SampleClass.class, - builder -> builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onType(SampleClass.class) .withMemberCategory(MemberCategory.INVOKE_PUBLIC_METHODS)); } @Test void typeWithMemberCategoriesMatchesCategories() { - runtimeHints.reflection().registerType(SampleClass.class, builder -> - builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS, MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS, + MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateMatches(reflection.onType(SampleClass.class) .withMemberCategories(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS, MemberCategory.INTROSPECT_PUBLIC_METHODS)); } @Test void typeWithMemberCategoriesDoesNotMatchMissingCategory() { - runtimeHints.reflection().registerType(SampleClass.class, builder -> builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onType(SampleClass.class) .withMemberCategories(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS, MemberCategory.INTROSPECT_PUBLIC_METHODS)); } @Test void typeWithAnyMemberCategoryFailsWithNullCategories() { - runtimeHints.reflection().registerType(SampleClass.class, builder -> - builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertThatIllegalArgumentException().isThrownBy(() -> reflection.onType(SampleClass.class).withAnyMemberCategory(new MemberCategory[0])); } @Test void typeWithAnyMemberCategoryMatchesCategory() { - runtimeHints.reflection().registerType(SampleClass.class, - builder -> builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS, + MemberCategory.INVOKE_PUBLIC_METHODS); assertPredicateMatches(reflection.onType(SampleClass.class) .withAnyMemberCategory(MemberCategory.INTROSPECT_PUBLIC_METHODS)); } @Test void typeWithAnyMemberCategoryDoesNotMatchOtherCategory() { - runtimeHints.reflection().registerType(SampleClass.class, - builder -> builder.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS, + MemberCategory.INVOKE_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onType(SampleClass.class) .withAnyMemberCategory(MemberCategory.INVOKE_DECLARED_METHODS)); } @@ -164,29 +160,25 @@ class ReflectionHintsPredicatesTests { @Test void constructorIntrospectionMatchesIntrospectPublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(publicConstructor).introspect()); } @Test void constructorIntrospectionMatchesInvokePublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(publicConstructor).introspect()); } @Test void constructorIntrospectionMatchesIntrospectDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(publicConstructor).introspect()); } @Test void constructorIntrospectionMatchesInvokeDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(publicConstructor).introspect()); } @@ -206,29 +198,25 @@ class ReflectionHintsPredicatesTests { @Test void constructorInvocationDoesNotMatchIntrospectPublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(publicConstructor).invoke()); } @Test void constructorInvocationMatchesInvokePublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(publicConstructor).invoke()); } @Test void constructorInvocationDoesNotMatchIntrospectDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(publicConstructor).invoke()); } @Test void constructorInvocationMatchesInvokeDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(publicConstructor).invoke()); } @@ -241,29 +229,25 @@ class ReflectionHintsPredicatesTests { @Test void privateConstructorIntrospectionDoesNotMatchIntrospectPublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(privateConstructor).introspect()); } @Test void privateConstructorIntrospectionDoesNotMatchInvokePublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(privateConstructor).introspect()); } @Test void privateConstructorIntrospectionMatchesIntrospectDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(privateConstructor).introspect()); } @Test void privateConstructorIntrospectionMatchesInvokeDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(privateConstructor).introspect()); } @@ -283,29 +267,25 @@ class ReflectionHintsPredicatesTests { @Test void privateConstructorInvocationDoesNotMatchIntrospectPublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(privateConstructor).invoke()); } @Test void privateConstructorInvocationDoesNotMatchInvokePublicConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(privateConstructor).invoke()); } @Test void privateConstructorInvocationDoesNotMatchIntrospectDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_CONSTRUCTORS); assertPredicateDoesNotMatch(reflection.onConstructor(privateConstructor).invoke()); } @Test void privateConstructorInvocationMatchesInvokeDeclaredConstructors() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); assertPredicateMatches(reflection.onConstructor(privateConstructor).invoke()); } @@ -323,25 +303,25 @@ class ReflectionHintsPredicatesTests { @Test void methodIntrospectionMatchesIntrospectPublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "publicMethod").introspect()); } @Test void methodIntrospectionMatchesInvokePublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "publicMethod").introspect()); } @Test void methodIntrospectionMatchesIntrospectDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "publicMethod").introspect()); } @Test void methodIntrospectionMatchesInvokeDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "publicMethod").introspect()); } @@ -361,25 +341,25 @@ class ReflectionHintsPredicatesTests { @Test void methodInvocationDoesNotMatchIntrospectPublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "publicMethod").invoke()); } @Test void methodInvocationMatchesInvokePublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "publicMethod").invoke()); } @Test void methodInvocationDoesNotMatchIntrospectDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "publicMethod").invoke()); } @Test void methodInvocationMatchesInvokeDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "publicMethod").invoke()); } @@ -392,25 +372,25 @@ class ReflectionHintsPredicatesTests { @Test void privateMethodIntrospectionDoesNotMatchIntrospectPublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "privateMethod").introspect()); } @Test void privateMethodIntrospectionDoesNotMatchInvokePublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "privateMethod").introspect()); } @Test void privateMethodIntrospectionMatchesIntrospectDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "privateMethod").introspect()); } @Test void privateMethodIntrospectionMatchesInvokeDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "privateMethod").introspect()); } @@ -430,25 +410,25 @@ class ReflectionHintsPredicatesTests { @Test void privateMethodInvocationDoesNotMatchIntrospectPublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "privateMethod").invoke()); } @Test void privateMethodInvocationDoesNotMatchInvokePublicMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_PUBLIC_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_PUBLIC_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "privateMethod").invoke()); } @Test void privateMethodInvocationDoesNotMatchIntrospectDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INTROSPECT_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INTROSPECT_DECLARED_METHODS); assertPredicateDoesNotMatch(reflection.onMethod(SampleClass.class, "privateMethod").invoke()); } @Test void privateMethodInvocationMatchesInvokeDeclaredMethods() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.INVOKE_DECLARED_METHODS); assertPredicateMatches(reflection.onMethod(SampleClass.class, "privateMethod").invoke()); } @@ -464,29 +444,27 @@ class ReflectionHintsPredicatesTests { @Test void fieldReflectionMatchesFieldHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("publicField", fieldHint -> { - })); + runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("publicField")); assertPredicateMatches(reflection.onField(SampleClass.class, "publicField")); } @Test void fieldWriteReflectionDoesNotMatchFieldHint() { runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("publicField", - fieldHint -> fieldHint.withMode(FieldMode.WRITE))); + FieldMode.READ)); assertPredicateDoesNotMatch(reflection.onField(SampleClass.class, "publicField").allowWrite()); } @Test void fieldUnsafeReflectionDoesNotMatchFieldHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("publicField", fieldHint -> { - })); + runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("publicField")); assertPredicateDoesNotMatch(reflection.onField(SampleClass.class, "publicField").allowUnsafeAccess()); } @Test void fieldWriteReflectionMatchesFieldHintWithWrite() { runtimeHints.reflection().registerType(SampleClass.class, typeHint -> - typeHint.withField("publicField", fieldHint -> fieldHint.withMode(FieldMode.WRITE))); + typeHint.withField("publicField", FieldMode.WRITE)); assertPredicateMatches(reflection.onField(SampleClass.class, "publicField").allowWrite()); } @@ -499,32 +477,31 @@ class ReflectionHintsPredicatesTests { @Test void fieldReflectionMatchesPublicFieldsHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_FIELDS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.PUBLIC_FIELDS); assertPredicateMatches(reflection.onField(SampleClass.class, "publicField")); } @Test void fieldReflectionMatchesDeclaredFieldsHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.DECLARED_FIELDS); assertPredicateMatches(reflection.onField(SampleClass.class, "publicField")); } @Test void privateFieldReflectionMatchesFieldHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("privateField", fieldHint -> { - })); + runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withField("privateField")); assertPredicateMatches(reflection.onField(SampleClass.class, "privateField")); } @Test void privateFieldReflectionDoesNotMatchPublicFieldsHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.PUBLIC_FIELDS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.PUBLIC_FIELDS); assertPredicateDoesNotMatch(reflection.onField(SampleClass.class, "privateField")); } @Test void privateFieldReflectionMatchesDeclaredFieldsHint() { - runtimeHints.reflection().registerType(SampleClass.class, typeHint -> typeHint.withMembers(MemberCategory.DECLARED_FIELDS)); + runtimeHints.reflection().registerType(SampleClass.class, MemberCategory.DECLARED_FIELDS); assertPredicateMatches(reflection.onField(SampleClass.class, "privateField")); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/MessageMappingReflectiveProcessor.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/MessageMappingReflectiveProcessor.java index 8fa0be9f606..22d9a2741e1 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/MessageMappingReflectiveProcessor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/MessageMappingReflectiveProcessor.java @@ -60,7 +60,7 @@ class MessageMappingReflectiveProcessor implements ReflectiveProcessor { } protected void registerTypeHints(ReflectionHints hints, Class type) { - hints.registerType(type, hint -> {}); + hints.registerType(type); } protected void registerMethodHints(ReflectionHints hints, Method method) { diff --git a/spring-test/src/main/java/org/springframework/test/context/aot/hint/TestContextRuntimeHints.java b/spring-test/src/main/java/org/springframework/test/context/aot/hint/TestContextRuntimeHints.java index dc9e0007aae..6eb52f5d6e3 100644 --- a/spring-test/src/main/java/org/springframework/test/context/aot/hint/TestContextRuntimeHints.java +++ b/spring-test/src/main/java/org/springframework/test/context/aot/hint/TestContextRuntimeHints.java @@ -24,6 +24,7 @@ import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.ReflectionHints; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; +import org.springframework.aot.hint.TypeHint; import org.springframework.aot.hint.TypeReference; import org.springframework.aot.hint.support.RuntimeHintsUtils; import org.springframework.util.ClassUtils; @@ -148,8 +149,7 @@ class TestContextRuntimeHints implements RuntimeHintsRegistrar { } private static void registerPublicConstructors(ReflectionHints reflectionHints, Iterable types) { - reflectionHints.registerTypes(types, - builder -> builder.withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); + reflectionHints.registerTypes(types, TypeHint.builtWith(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); } private static void registerDeclaredConstructors(ReflectionHints reflectionHints, Class... types) { @@ -161,8 +161,7 @@ class TestContextRuntimeHints implements RuntimeHintsRegistrar { } private static void registerDeclaredConstructors(ReflectionHints reflectionHints, Iterable types) { - reflectionHints.registerTypes(types, - builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); + reflectionHints.registerTypes(types, TypeHint.builtWith(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)); } private static List listOf(String... classNames) { @@ -179,8 +178,7 @@ class TestContextRuntimeHints implements RuntimeHintsRegistrar { } private static void registerAnnotation(ReflectionHints reflectionHints, Class annotationType) { - reflectionHints.registerType(annotationType, - builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + reflectionHints.registerType(annotationType, MemberCategory.INVOKE_DECLARED_METHODS); } } diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java index 4a8cc281147..a1f0ec9b4c7 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java @@ -85,8 +85,7 @@ class TransactionBeanRegistrationAotProcessor implements BeanRegistrationAotProc return; } for (Class proxyInterface : proxyInterfaces) { - runtimeHints.reflection().registerType(proxyInterface, - builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + runtimeHints.reflection().registerType(proxyInterface, MemberCategory.INVOKE_DECLARED_METHODS); } } } diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionRuntimeHints.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionRuntimeHints.java index d3bc9ffedf0..23a9ab4d26d 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionRuntimeHints.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionRuntimeHints.java @@ -19,6 +19,7 @@ package org.springframework.transaction.annotation; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; +import org.springframework.aot.hint.TypeHint; import org.springframework.aot.hint.TypeReference; import org.springframework.aot.hint.support.RuntimeHintsUtils; import org.springframework.transaction.TransactionDefinition; @@ -37,7 +38,8 @@ class TransactionRuntimeHints implements RuntimeHintsRegistrar { public void registerHints(RuntimeHints hints, ClassLoader classLoader) { RuntimeHintsUtils.registerSynthesizedAnnotation(hints, Transactional.class); hints.reflection().registerTypes(TypeReference.listOf( - Isolation.class, Propagation.class, TransactionDefinition.class), - builder -> builder.withMembers(MemberCategory.DECLARED_FIELDS)); + Isolation.class, Propagation.class, TransactionDefinition.class), + TypeHint.builtWith(MemberCategory.DECLARED_FIELDS)); } + } diff --git a/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurerRuntimeHints.java b/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurerRuntimeHints.java index 91273acf5e5..c317651075f 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurerRuntimeHints.java +++ b/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurerRuntimeHints.java @@ -16,12 +16,9 @@ package org.springframework.http.codec; -import java.util.function.Consumer; - import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; -import org.springframework.aot.hint.TypeHint.Builder; import org.springframework.aot.hint.TypeReference; import org.springframework.http.codec.support.DefaultClientCodecConfigurer; import org.springframework.http.codec.support.DefaultServerCodecConfigurer; @@ -37,16 +34,14 @@ import org.springframework.lang.Nullable; */ class CodecConfigurerRuntimeHints implements RuntimeHintsRegistrar { - private static final Consumer CODEC_HINT = type -> type - .onReachableType(CodecConfigurerFactory.class) - .withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); - @Override public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) { - hints.resources().registerPattern("org/springframework/http/codec/CodecConfigurer.properties"); - hints.reflection().registerTypes(TypeReference.listOf( - DefaultClientCodecConfigurer.class, DefaultServerCodecConfigurer.class), - CODEC_HINT); + hints.resources().registerPattern( + "org/springframework/http/codec/CodecConfigurer.properties"); + hints.reflection().registerTypes( + TypeReference.listOf(DefaultClientCodecConfigurer.class, DefaultServerCodecConfigurer.class), + typeHint -> typeHint.onReachableType(CodecConfigurerFactory.class) + .withMembers(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)); } } diff --git a/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMappingReflectiveProcessor.java b/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMappingReflectiveProcessor.java index ac45533aee3..1121cbb1d43 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMappingReflectiveProcessor.java +++ b/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMappingReflectiveProcessor.java @@ -59,7 +59,7 @@ class RequestMappingReflectiveProcessor implements ReflectiveProcessor { } protected void registerTypeHints(ReflectionHints hints, Class type) { - hints.registerType(type, hint -> {}); + hints.registerType(type); } protected void registerMethodHints(ReflectionHints hints, Method method) {