diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHints.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHints.java index a5a29e7c9b3..c4e46f8ecd8 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHints.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHints.java @@ -20,12 +20,11 @@ import java.util.stream.Stream; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; +import org.springframework.aot.hint.TypeReference; import org.springframework.lang.Nullable; -import org.springframework.util.ClassUtils; /** * {@link RuntimeHintsRegistrar} for Jakarta annotations. - *
Hints are only registered if Jakarta inject is on the classpath. * * @author Brian Clozel */ @@ -33,10 +32,8 @@ class JakartaAnnotationsRuntimeHints implements RuntimeHintsRegistrar { @Override public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) { - if (ClassUtils.isPresent("jakarta.inject.Inject", classLoader)) { - Stream.of("jakarta.inject.Inject", "jakarta.inject.Qualifier").forEach(annotationType -> - hints.reflection().registerType(ClassUtils.resolveClassName(annotationType, classLoader))); - } + Stream.of("jakarta.inject.Inject", "jakarta.inject.Provider", "jakarta.inject.Qualifier").forEach(typeName -> + hints.reflection().registerType(TypeReference.of(typeName))); } } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHintsTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHintsTests.java index d56b851f93f..387db6f7a20 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHintsTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/annotation/JakartaAnnotationsRuntimeHintsTests.java @@ -18,6 +18,7 @@ package org.springframework.beans.factory.annotation; import jakarta.inject.Inject; +import jakarta.inject.Provider; import jakarta.inject.Qualifier; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -51,6 +52,11 @@ class JakartaAnnotationsRuntimeHintsTests { assertThat(RuntimeHintsPredicates.reflection().onType(Inject.class)).accepts(this.hints); } + @Test + void jakartaProviderAnnotationHasHints() { + assertThat(RuntimeHintsPredicates.reflection().onType(Provider.class)).accepts(this.hints); + } + @Test void jakartaQualifierAnnotationHasHints() { assertThat(RuntimeHintsPredicates.reflection().onType(Qualifier.class)).accepts(this.hints);