From 8a51e31069f376a65a876fd2e86253cf3c15a659 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 22 Aug 2022 14:17:33 +0200 Subject: [PATCH] Make sure that AnnotationAwareOrderComparator is configured with AOT Closes gh-28988 --- .../aot/ApplicationContextInitializationCodeGenerator.java | 3 +++ .../context/aot/ApplicationContextAotGeneratorTests.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/aot/ApplicationContextInitializationCodeGenerator.java b/spring-context/src/main/java/org/springframework/context/aot/ApplicationContextInitializationCodeGenerator.java index 460a1a46be1..e49772d2d3c 100644 --- a/spring-context/src/main/java/org/springframework/context/aot/ApplicationContextInitializationCodeGenerator.java +++ b/spring-context/src/main/java/org/springframework/context/aot/ApplicationContextInitializationCodeGenerator.java @@ -30,6 +30,7 @@ import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.annotation.ContextAnnotationAutowireCandidateResolver; import org.springframework.context.support.GenericApplicationContext; +import org.springframework.core.annotation.AnnotationAwareOrderComparator; import org.springframework.javapoet.CodeBlock; import org.springframework.javapoet.MethodSpec; import org.springframework.javapoet.ParameterizedTypeName; @@ -85,6 +86,8 @@ class ApplicationContextInitializationCodeGenerator implements BeanFactoryInitia APPLICATION_CONTEXT_VARIABLE); builder.addStatement("$L.setAutowireCandidateResolver(new $T())", BEAN_FACTORY_VARIABLE, ContextAnnotationAutowireCandidateResolver.class); + builder.addStatement("$L.setDependencyComparator($T.INSTANCE)", + BEAN_FACTORY_VARIABLE, AnnotationAwareOrderComparator.class); for (MethodReference initializer : this.initializers) { builder.addStatement(initializer.toInvokeCodeBlock(CodeBlock.of(BEAN_FACTORY_VARIABLE))); } diff --git a/spring-context/src/test/java/org/springframework/context/aot/ApplicationContextAotGeneratorTests.java b/spring-context/src/test/java/org/springframework/context/aot/ApplicationContextAotGeneratorTests.java index 34f601e0325..a85c2d80db7 100644 --- a/spring-context/src/test/java/org/springframework/context/aot/ApplicationContextAotGeneratorTests.java +++ b/spring-context/src/test/java/org/springframework/context/aot/ApplicationContextAotGeneratorTests.java @@ -141,8 +141,9 @@ class ApplicationContextAotGeneratorTests { testCompiledResult(applicationContext, (initializer, compiled) -> { GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); assertThat(freshApplicationContext.getBeanDefinitionNames()).isEmpty(); - assertThat(compiled.getSourceFile()).contains( - "beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver())"); + assertThat(compiled.getSourceFile()) + .contains("beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver())") + .contains("beanFactory.setDependencyComparator(AnnotationAwareOrderComparator.INSTANCE)"); }); }