From 4b018407c1ae561c8c35d9eae4cfbc149bbd25f0 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 26 Dec 2016 11:00:22 +0100 Subject: [PATCH] Expose reflection metadata with ASM-driven method order Issue: SPR-14505 (cherry picked from commit 0208198) --- .../context/annotation/ConfigurationClassParser.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index 76a7c77d827..08d284881f2 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -365,7 +365,17 @@ class ConfigurationClassParser { try { AnnotationMetadata asm = this.metadataReaderFactory.getMetadataReader(original.getClassName()).getAnnotationMetadata(); - beanMethods = asm.getAnnotatedMethods(Bean.class.getName()); + Set asmMethods = asm.getAnnotatedMethods(Bean.class.getName()); + Set reflectionMethods = beanMethods; + beanMethods = new LinkedHashSet(); + for (MethodMetadata asmMethod : asmMethods) { + for (MethodMetadata reflectionMethod : reflectionMethods) { + if (reflectionMethod.getMethodName().equals(asmMethod.getMethodName())) { + beanMethods.add(reflectionMethod); + break; + } + } + } } catch (IOException ex) { logger.debug("Failed to read class file via ASM for determining @Bean method order", ex);