From 020819880404f596e6361688bf32035c4a3a6174 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 --- .../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 58d9e202143..6530676df5e 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 @@ -364,7 +364,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);