From b9d46173f7286413f6f44a6ec919b0d59544494e Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 24 Oct 2022 12:15:51 +0200 Subject: [PATCH] GH-56 - ModuleTestAutoConfiguration is now autoconfiguration of highest precedence. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also, keep autoconfiguration packages as String array to avoid ClassCastExceptions when the bean definition's constructor arguments are inspected manually (like in AutoConfigurationPackages.addBasePackages(…). --- .../modulith/test/ModuleTestAutoConfiguration.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java b/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java index 59f55348..7a0b8680 100644 --- a/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java +++ b/spring-modulith-test/src/main/java/org/springframework/modulith/test/ModuleTestAutoConfiguration.java @@ -28,9 +28,11 @@ import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; +import org.springframework.core.Ordered; import org.springframework.core.type.AnnotationMetadata; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; @@ -44,6 +46,7 @@ import org.springframework.util.StringUtils; */ @Configuration @Import(ModuleTestAutoConfiguration.AutoConfigurationAndEntityScanPackageCustomizer.class) +@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) class ModuleTestAutoConfiguration { private static final String AUTOCONFIG_PACKAGES = "org.springframework.boot.autoconfigure.AutoConfigurationPackages"; @@ -106,7 +109,7 @@ class ModuleTestAutoConfiguration { .forEach(packages::add); // Fall back to customize the bean definition in a Boot 2.3 arrangement - definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages); + definition.getConstructorArgumentValues().addIndexedArgumentValue(0, packages.toArray(String[]::new)); } } }