Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
case: beanDefinition of the bean defined in Configuration annotated class
in this case, the `beanDefinition.getBeanClassName()` and `beanClass.getName()` is not match
  • Loading branch information
lonre authored Aug 1, 2021
1 parent 02c43dd commit ffc4e99
Showing 1 changed file with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.Map;
import java.util.Objects;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
Expand All @@ -40,10 +41,19 @@ public static boolean registerBeanDefinitionIfNotExists(BeanDefinitionRegistry r

String[] candidates = registry.getBeanDefinitionNames();

for (String candidate : candidates) {
BeanDefinition beanDefinition = registry.getBeanDefinition(candidate);
if (Objects.equals(beanDefinition.getBeanClassName(), beanClass.getName())) {
return false;
if (registry instanceof BeanFactory) {
final BeanFactory beanFactory = (BeanFactory) registry;
for (String candidate : candidates) {
if (beanFactory.isTypeMatch(candidate, beanClass)) {
return false;
}
}
} else {
for (String candidate : candidates) {
BeanDefinition beanDefinition = registry.getBeanDefinition(candidate);
if (Objects.equals(beanDefinition.getBeanClassName(), beanClass.getName())) {
return false;
}
}
}

Expand Down

0 comments on commit ffc4e99

Please sign in to comment.