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);