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 18ba37ac66..f2bcbe94e3 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