Always accept existing explicit definition for same class name
See gh-25952
This commit is contained in:
parent
4bfbf7d3c8
commit
e685ff0416
|
|
@ -33,6 +33,7 @@ import org.springframework.core.env.StandardEnvironment;
|
|||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.PatternMatchUtils;
|
||||
|
||||
/**
|
||||
|
|
@ -345,7 +346,8 @@ public class ClassPathBeanDefinitionScanner extends ClassPathScanningCandidateCo
|
|||
|
||||
// Explicitly registered overriding bean?
|
||||
if (!(existingDef instanceof ScannedGenericBeanDefinition) &&
|
||||
this.registry.isBeanDefinitionOverridable(beanName)) {
|
||||
(this.registry.isBeanDefinitionOverridable(beanName) || ObjectUtils.nullSafeEquals(
|
||||
beanDefinition.getBeanClassName(), existingDef.getBeanClassName()))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -215,6 +215,18 @@ public class ClassPathBeanDefinitionScannerTests {
|
|||
.withMessageContaining(StubFooDao.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleScanWithDefaultFiltersAndOverridingBeanAcceptedForSameBeanClass() {
|
||||
GenericApplicationContext context = new GenericApplicationContext();
|
||||
context.getDefaultListableBeanFactory().setAllowBeanDefinitionOverriding(false);
|
||||
context.registerBeanDefinition("stubFooDao", new RootBeanDefinition(StubFooDao.class));
|
||||
ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context);
|
||||
scanner.setIncludeAnnotationConfig(false);
|
||||
|
||||
// should not fail!
|
||||
scanner.scan(BASE_PACKAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleScanWithDefaultFiltersAndDefaultBeanNameClash() {
|
||||
GenericApplicationContext context = new GenericApplicationContext();
|
||||
|
|
|
|||
Loading…
Reference in New Issue