Skip to content

Commit c14b57a

Browse files
committed
Check scoped proxy target for isDefaultCandidate
Update `OnBeanCondition` to check the scoped proxy target for `isDefaultCandidate`. This fixes an issue introduced by spring-projects/spring-framework#35627. Fixes gh-47633
1 parent ef25b05 commit c14b57a

File tree

1 file changed

+16
-15
lines changed
  • spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition

1 file changed

+16
-15
lines changed

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

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -270,23 +270,24 @@ private Set<String> matchedNamesFrom(Map<String, BeanDefinition> namedDefinition
270270

271271
private boolean isCandidate(ConfigurableListableBeanFactory beanFactory, String name, BeanDefinition definition,
272272
Set<String> ignoredBeans) {
273-
return (!ignoredBeans.contains(name)) && (definition == null
274-
|| isAutowireCandidate(beanFactory, name, definition) && isDefaultCandidate(definition));
275-
}
276-
277-
private boolean isAutowireCandidate(ConfigurableListableBeanFactory beanFactory, String name,
278-
BeanDefinition definition) {
279-
return definition.isAutowireCandidate() || isScopeTargetAutowireCandidate(beanFactory, name);
280-
}
281-
282-
private boolean isScopeTargetAutowireCandidate(ConfigurableListableBeanFactory beanFactory, String name) {
283-
try {
284-
return ScopedProxyUtils.isScopedTarget(name)
285-
&& beanFactory.getBeanDefinition(ScopedProxyUtils.getOriginalBeanName(name)).isAutowireCandidate();
286-
}
287-
catch (NoSuchBeanDefinitionException ex) {
273+
if (ignoredBeans.contains(name) || definition == null) {
288274
return false;
289275
}
276+
if (definition.isAutowireCandidate() && isDefaultCandidate(definition)) {
277+
return true;
278+
}
279+
if (ScopedProxyUtils.isScopedTarget(name)) {
280+
try {
281+
BeanDefinition originalDefinition = beanFactory
282+
.getBeanDefinition(ScopedProxyUtils.getOriginalBeanName(name));
283+
if (originalDefinition.isAutowireCandidate() && isDefaultCandidate(originalDefinition)) {
284+
return true;
285+
}
286+
}
287+
catch (NoSuchBeanDefinitionException ex) {
288+
}
289+
}
290+
return false;
290291
}
291292

292293
private boolean isDefaultCandidate(BeanDefinition definition) {

0 commit comments

Comments
 (0)