diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java index 9c436a8e0a6..d2c1ca5f082 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java @@ -271,23 +271,24 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat private boolean isCandidate(ConfigurableListableBeanFactory beanFactory, String name, BeanDefinition definition, Set ignoredBeans) { - return (!ignoredBeans.contains(name)) && (definition == null - || isAutowireCandidate(beanFactory, name, definition) && isDefaultCandidate(definition)); - } - - private boolean isAutowireCandidate(ConfigurableListableBeanFactory beanFactory, String name, - BeanDefinition definition) { - return definition.isAutowireCandidate() || isScopeTargetAutowireCandidate(beanFactory, name); - } - - private boolean isScopeTargetAutowireCandidate(ConfigurableListableBeanFactory beanFactory, String name) { - try { - return ScopedProxyUtils.isScopedTarget(name) - && beanFactory.getBeanDefinition(ScopedProxyUtils.getOriginalBeanName(name)).isAutowireCandidate(); - } - catch (NoSuchBeanDefinitionException ex) { + if (ignoredBeans.contains(name) || definition == null) { return false; } + if (definition.isAutowireCandidate() && isDefaultCandidate(definition)) { + return true; + } + if (ScopedProxyUtils.isScopedTarget(name)) { + try { + BeanDefinition originalDefinition = beanFactory + .getBeanDefinition(ScopedProxyUtils.getOriginalBeanName(name)); + if (originalDefinition.isAutowireCandidate() && isDefaultCandidate(originalDefinition)) { + return true; + } + } + catch (NoSuchBeanDefinitionException ex) { + } + } + return false; } private boolean isDefaultCandidate(BeanDefinition definition) {