diff --git a/spring-core/src/main/java/org/springframework/core/annotation/CoreAnnotationsRuntimeHintsRegistrar.java b/spring-core/src/main/java/org/springframework/aot/hint/support/CoreAnnotationsRuntimeHintsRegistrar.java similarity index 89% rename from spring-core/src/main/java/org/springframework/core/annotation/CoreAnnotationsRuntimeHintsRegistrar.java rename to spring-core/src/main/java/org/springframework/aot/hint/support/CoreAnnotationsRuntimeHintsRegistrar.java index d38e4e38a0..a8ad865e82 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/CoreAnnotationsRuntimeHintsRegistrar.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/support/CoreAnnotationsRuntimeHintsRegistrar.java @@ -14,13 +14,14 @@ * limitations under the License. */ -package org.springframework.core.annotation; +package org.springframework.aot.hint.support; import java.util.stream.Stream; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; -import org.springframework.aot.hint.support.RuntimeHintsUtils; +import org.springframework.core.annotation.AliasFor; +import org.springframework.core.annotation.Order; import org.springframework.lang.Nullable; /** diff --git a/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoaderRuntimeHintsRegistrar.java b/spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHintsRegistrar.java similarity index 81% rename from spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoaderRuntimeHintsRegistrar.java rename to spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHintsRegistrar.java index 1e0d3f3808..16f602a15d 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoaderRuntimeHintsRegistrar.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHintsRegistrar.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.core.io.support; +package org.springframework.aot.hint.support; import java.util.List; import java.util.Map; @@ -27,6 +27,7 @@ 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; import org.springframework.util.ClassUtils; @@ -41,13 +42,13 @@ import org.springframework.util.ClassUtils; */ class SpringFactoriesLoaderRuntimeHintsRegistrar implements RuntimeHintsRegistrar { - private static List RESOURCE_LOCATIONS = + 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 final Log logger = LogFactory.getLog(SpringFactoriesLoaderRuntimeHintsRegistrar.class); + private static final Log logger = LogFactory.getLog(SpringFactoriesLoaderRuntimeHintsRegistrar.class); @Override @@ -60,7 +61,7 @@ class SpringFactoriesLoaderRuntimeHintsRegistrar implements RuntimeHintsRegistra private void registerHints(RuntimeHints hints, ClassLoader classLoader, String resourceLocation) { hints.resources().registerPattern(resourceLocation); Map> factories = - SpringFactoriesLoader.loadFactoriesResource(classLoader, resourceLocation); + ExtendedSpringFactoriesLoader.accessLoadFactoriesResource(classLoader, resourceLocation); factories.forEach((factoryClassName, implementationClassNames) -> registerHints(hints, classLoader, factoryClassName, implementationClassNames)); } @@ -104,4 +105,16 @@ class SpringFactoriesLoaderRuntimeHintsRegistrar implements RuntimeHintsRegistra } } + private static class ExtendedSpringFactoriesLoader extends SpringFactoriesLoader { + + public ExtendedSpringFactoriesLoader(@Nullable ClassLoader classLoader, Map> factories) { + super(classLoader, factories); + } + + static Map> accessLoadFactoriesResource(ClassLoader classLoader, String resourceLocation) { + return SpringFactoriesLoader.loadFactoriesResource(classLoader, resourceLocation); + } + + } + } diff --git a/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java b/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java index aca3464a7f..41234150bb 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java +++ b/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java @@ -327,7 +327,7 @@ public class SpringFactoriesLoader { new SpringFactoriesLoader(classLoader, loadFactoriesResource(resourceClassLoader, resourceLocation))); } - static Map> loadFactoriesResource(ClassLoader classLoader, String resourceLocation) { + protected static Map> loadFactoriesResource(ClassLoader classLoader, String resourceLocation) { Map> result = new LinkedHashMap<>(); try { Enumeration urls = classLoader.getResources(resourceLocation); diff --git a/spring-core/src/main/resources/META-INF/spring/aot.factories b/spring-core/src/main/resources/META-INF/spring/aot.factories index ba5ee0bc83..17f6fbd0d0 100644 --- a/spring-core/src/main/resources/META-INF/spring/aot.factories +++ b/spring-core/src/main/resources/META-INF/spring/aot.factories @@ -1,3 +1,3 @@ org.springframework.aot.hint.RuntimeHintsRegistrar=\ -org.springframework.core.annotation.CoreAnnotationsRuntimeHintsRegistrar,\ -org.springframework.core.io.support.SpringFactoriesLoaderRuntimeHintsRegistrar +org.springframework.aot.hint.support.CoreAnnotationsRuntimeHintsRegistrar,\ +org.springframework.aot.hint.support.SpringFactoriesLoaderRuntimeHintsRegistrar diff --git a/spring-core/src/test/java/org/springframework/core/annotation/CoreAnnotationsRuntimeHintsRegistrarTests.java b/spring-core/src/test/java/org/springframework/aot/hint/support/CoreAnnotationsRuntimeHintsRegistrarTests.java similarity index 93% rename from spring-core/src/test/java/org/springframework/core/annotation/CoreAnnotationsRuntimeHintsRegistrarTests.java rename to spring-core/src/test/java/org/springframework/aot/hint/support/CoreAnnotationsRuntimeHintsRegistrarTests.java index 683837f6f0..cad643cccb 100644 --- a/spring-core/src/test/java/org/springframework/core/annotation/CoreAnnotationsRuntimeHintsRegistrarTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/support/CoreAnnotationsRuntimeHintsRegistrarTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.core.annotation; +package org.springframework.aot.hint.support; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -23,6 +23,8 @@ import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.aot.hint.TypeReference; +import org.springframework.core.annotation.AliasFor; +import org.springframework.core.annotation.Order; import org.springframework.core.io.support.SpringFactoriesLoader; import org.springframework.util.ClassUtils; diff --git a/spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderRuntimeHintsRegistrarTests.java b/spring-core/src/test/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHintsRegistrarTests.java similarity index 91% rename from spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderRuntimeHintsRegistrarTests.java rename to spring-core/src/test/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHintsRegistrarTests.java index 114e9fefe6..bf2150c373 100644 --- a/spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderRuntimeHintsRegistrarTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/support/SpringFactoriesLoaderRuntimeHintsRegistrarTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.core.io.support; +package org.springframework.aot.hint.support; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -25,6 +25,9 @@ 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.core.io.support.DummyFactory; +import org.springframework.core.io.support.MyDummyFactory1; +import org.springframework.core.io.support.SpringFactoriesLoader; import org.springframework.util.ClassUtils; import static org.assertj.core.api.Assertions.assertThat;