From 354c3e03e96f768400e963df1d09efc3e69105fb Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 19 Sep 2014 00:11:44 +0200 Subject: [PATCH] Refined exclusion of bridge methods in annotation post-processors (for Java 8 compatibility) Issue: SPR-12187 (cherry picked from commit 29abca5) --- .../AutowiredAnnotationBeanPostProcessor.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index cec20e5963..92eaf8ef97 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -391,10 +391,15 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean } } for (Method method : targetClass.getDeclaredMethods()) { + AnnotationAttributes ann = null; Method bridgedMethod = BridgeMethodResolver.findBridgedMethod(method); - AnnotationAttributes ann = BridgeMethodResolver.isVisibilityBridgeMethodPair(method, bridgedMethod) ? - findAutowiredAnnotation(bridgedMethod) : findAutowiredAnnotation(method); - if (ann != null && !method.isBridge() && method.equals(ClassUtils.getMostSpecificMethod(method, clazz))) { + if (BridgeMethodResolver.isVisibilityBridgeMethodPair(method, bridgedMethod)) { + ann = findAutowiredAnnotation(bridgedMethod); + } + else if (!method.isBridge()) { + ann = findAutowiredAnnotation(method); + } + if (ann != null && method.equals(ClassUtils.getMostSpecificMethod(method, clazz))) { if (Modifier.isStatic(method.getModifiers())) { if (logger.isWarnEnabled()) { logger.warn("Autowired annotation is not supported on static methods: " + method);