BeanDefinitionOverrideException in case of overriding not allowed

Issue: SPR-16982
This commit is contained in:
Juergen Hoeller
2018-07-04 21:32:51 +02:00
parent 63d6215247
commit 182243d20d
5 changed files with 122 additions and 28 deletions

View File

@@ -68,6 +68,7 @@ import org.springframework.beans.factory.config.TypedStringValue;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionOverrideException;
import org.springframework.beans.factory.support.ChildBeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.ManagedList;
@@ -841,14 +842,17 @@ public class DefaultListableBeanFactoryTests {
public void testBeanDefinitionOverridingNotAllowed() {
DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
lbf.setAllowBeanDefinitionOverriding(false);
lbf.registerBeanDefinition("test", new RootBeanDefinition(TestBean.class));
BeanDefinition oldDef = new RootBeanDefinition(TestBean.class);
BeanDefinition newDef = new RootBeanDefinition(NestedTestBean.class);
lbf.registerBeanDefinition("test", oldDef);
try {
lbf.registerBeanDefinition("test", new RootBeanDefinition(NestedTestBean.class));
fail("Should have thrown BeanDefinitionStoreException");
lbf.registerBeanDefinition("test", newDef);
fail("Should have thrown BeanDefinitionOverrideException");
}
catch (BeanDefinitionStoreException ex) {
catch (BeanDefinitionOverrideException ex) {
assertEquals("test", ex.getBeanName());
// expected
assertSame(newDef, ex.getBeanDefinition());
assertSame(oldDef, ex.getExistingDefinition());
}
}