From abbe61b9f87a97b9541bcd4e8a764457d8283d47 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 3 Apr 2019 14:33:57 +0200 Subject: [PATCH] Consistent internal use of getMergedLocalBeanDefinition --- .../support/DefaultListableBeanFactory.java | 36 +++++-------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java index 18ba37ac66f..f2bcbe94e3d 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java @@ -656,12 +656,6 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto return result; } - /** - * Find a {@link Annotation} of {@code annotationType} on the specified - * bean, traversing its interfaces and super classes if no annotation can be - * found on the given class itself, as well as checking its raw bean class - * if not found on the exposed bean reference (e.g. in case of a proxy). - */ @Override @Nullable public A findAnnotationOnBean(String beanName, Class annotationType) @@ -673,14 +667,12 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto ann = AnnotationUtils.findAnnotation(beanType, annotationType); } if (ann == null && containsBeanDefinition(beanName)) { - BeanDefinition bd = getMergedBeanDefinition(beanName); - if (bd instanceof AbstractBeanDefinition) { - AbstractBeanDefinition abd = (AbstractBeanDefinition) bd; - if (abd.hasBeanClass()) { - Class beanClass = abd.getBeanClass(); - if (beanClass != beanType) { - ann = AnnotationUtils.findAnnotation(beanClass, annotationType); - } + // Check raw bean class, e.g. in case of a proxy. + RootBeanDefinition bd = getMergedLocalBeanDefinition(beanName); + if (bd.hasBeanClass()) { + Class beanClass = bd.getBeanClass(); + if (beanClass != beanType) { + ann = AnnotationUtils.findAnnotation(beanClass, annotationType); } } } @@ -1975,10 +1967,11 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto @Override @Nullable public Object getOrderSource(Object obj) { - RootBeanDefinition beanDefinition = getRootBeanDefinition(this.instancesToBeanNames.get(obj)); - if (beanDefinition == null) { + String beanName = this.instancesToBeanNames.get(obj); + if (beanName == null || !containsBeanDefinition(beanName)) { return null; } + RootBeanDefinition beanDefinition = getMergedLocalBeanDefinition(beanName); List sources = new ArrayList<>(2); Method factoryMethod = beanDefinition.getResolvedFactoryMethod(); if (factoryMethod != null) { @@ -1990,17 +1983,6 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } return sources.toArray(); } - - @Nullable - private RootBeanDefinition getRootBeanDefinition(@Nullable String beanName) { - if (beanName != null && containsBeanDefinition(beanName)) { - BeanDefinition bd = getMergedBeanDefinition(beanName); - if (bd instanceof RootBeanDefinition) { - return (RootBeanDefinition) bd; - } - } - return null; - } } }