Browse Source

Merge branch '3.5.x'

Closes gh-47636
pull/47637/head
Phillip Webb 2 months ago
parent
commit
32ca67abc7
  1. 23
      core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java

23
core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java

@ -279,24 +279,25 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
private boolean isCandidate(ConfigurableListableBeanFactory beanFactory, String name, private boolean isCandidate(ConfigurableListableBeanFactory beanFactory, String name,
@Nullable BeanDefinition definition, Set<String> ignoredBeans) { @Nullable BeanDefinition definition, Set<String> ignoredBeans) {
return (!ignoredBeans.contains(name)) && (definition == null if (ignoredBeans.contains(name) || definition == null) {
|| isAutowireCandidate(beanFactory, name, definition) && isDefaultCandidate(definition)); return false;
} }
if (definition.isAutowireCandidate() && isDefaultCandidate(definition)) {
private boolean isAutowireCandidate(ConfigurableListableBeanFactory beanFactory, String name, return true;
BeanDefinition definition) {
return definition.isAutowireCandidate() || isScopeTargetAutowireCandidate(beanFactory, name);
} }
if (ScopedProxyUtils.isScopedTarget(name)) {
private boolean isScopeTargetAutowireCandidate(ConfigurableListableBeanFactory beanFactory, String name) {
try { try {
return ScopedProxyUtils.isScopedTarget(name) BeanDefinition originalDefinition = beanFactory
&& beanFactory.getBeanDefinition(ScopedProxyUtils.getOriginalBeanName(name)).isAutowireCandidate(); .getBeanDefinition(ScopedProxyUtils.getOriginalBeanName(name));
if (originalDefinition.isAutowireCandidate() && isDefaultCandidate(originalDefinition)) {
return true;
}
} }
catch (NoSuchBeanDefinitionException ex) { catch (NoSuchBeanDefinitionException ex) {
return false;
} }
} }
return false;
}
private boolean isDefaultCandidate(BeanDefinition definition) { private boolean isDefaultCandidate(BeanDefinition definition) {
if (definition instanceof AbstractBeanDefinition abstractBeanDefinition) { if (definition instanceof AbstractBeanDefinition abstractBeanDefinition) {

Loading…
Cancel
Save