Merge branch '5.1.x'
# Conflicts: # build.gradle # spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java # spring-aspects/spring-aspects.gradle # spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java # spring-beans/src/main/java/org/springframework/beans/factory/support/GenericBeanDefinition.java # spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java # spring-orm/spring-orm.gradle # spring-test/spring-test.gradle
This commit is contained in:
@@ -856,6 +856,18 @@ class DefaultListableBeanFactoryTests {
|
||||
lbf.registerAlias("test", "test3");
|
||||
}
|
||||
|
||||
@Test
|
||||
void aliasChaining() {
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(NestedTestBean.class));
|
||||
lbf.registerAlias("test", "testAlias");
|
||||
lbf.registerAlias("testAlias", "testAlias2");
|
||||
lbf.registerAlias("testAlias2", "testAlias3");
|
||||
Object bean = lbf.getBean("test");
|
||||
assertThat(lbf.getBean("testAlias")).isSameAs(bean);
|
||||
assertThat(lbf.getBean("testAlias2")).isSameAs(bean);
|
||||
assertThat(lbf.getBean("testAlias3")).isSameAs(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionOverriding() {
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(TestBean.class));
|
||||
@@ -866,6 +878,43 @@ class DefaultListableBeanFactoryTests {
|
||||
assertThat(lbf.getBean("test2")).isInstanceOf(NestedTestBean.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionOverridingNotAllowed() {
|
||||
lbf.setAllowBeanDefinitionOverriding(false);
|
||||
BeanDefinition oldDef = new RootBeanDefinition(TestBean.class);
|
||||
BeanDefinition newDef = new RootBeanDefinition(NestedTestBean.class);
|
||||
lbf.registerBeanDefinition("test", oldDef);
|
||||
assertThatExceptionOfType(BeanDefinitionOverrideException.class).isThrownBy(() ->
|
||||
lbf.registerBeanDefinition("test", newDef))
|
||||
.satisfies(ex -> {
|
||||
assertThat(ex.getBeanName()).isEqualTo("test");
|
||||
assertThat(ex.getBeanDefinition()).isEqualTo(newDef);
|
||||
assertThat(ex.getExistingDefinition()).isEqualTo(oldDef);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionOverridingWithAlias() {
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(TestBean.class));
|
||||
lbf.registerAlias("test", "testAlias");
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(NestedTestBean.class));
|
||||
lbf.registerAlias("test", "testAlias");
|
||||
assertThat(lbf.getBean("test")).isInstanceOf(NestedTestBean.class);
|
||||
assertThat(lbf.getBean("testAlias")).isInstanceOf(NestedTestBean.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionOverridingWithConstructorArgumentMismatch() {
|
||||
RootBeanDefinition bd1 = new RootBeanDefinition(NestedTestBean.class);
|
||||
bd1.getConstructorArgumentValues().addIndexedArgumentValue(1, "value1");
|
||||
lbf.registerBeanDefinition("test", bd1);
|
||||
RootBeanDefinition bd2 = new RootBeanDefinition(NestedTestBean.class);
|
||||
bd2.getConstructorArgumentValues().addIndexedArgumentValue(0, "value0");
|
||||
lbf.registerBeanDefinition("test", bd2);
|
||||
assertThat(lbf.getBean("test")).isInstanceOf(NestedTestBean.class);
|
||||
assertThat(lbf.getBean("test", NestedTestBean.class).getCompany()).isEqualTo("value0");
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionRemoval() {
|
||||
lbf.setAllowBeanDefinitionOverriding(false);
|
||||
@@ -908,43 +957,6 @@ class DefaultListableBeanFactoryTests {
|
||||
lbf.removeBeanDefinition(name);
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionOverridingNotAllowed() {
|
||||
lbf.setAllowBeanDefinitionOverriding(false);
|
||||
BeanDefinition oldDef = new RootBeanDefinition(TestBean.class);
|
||||
BeanDefinition newDef = new RootBeanDefinition(NestedTestBean.class);
|
||||
lbf.registerBeanDefinition("test", oldDef);
|
||||
assertThatExceptionOfType(BeanDefinitionOverrideException.class).isThrownBy(() ->
|
||||
lbf.registerBeanDefinition("test", newDef))
|
||||
.satisfies(ex -> {
|
||||
assertThat(ex.getBeanName()).isEqualTo("test");
|
||||
assertThat(ex.getBeanDefinition()).isEqualTo(newDef);
|
||||
assertThat(ex.getExistingDefinition()).isEqualTo(oldDef);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanDefinitionOverridingWithAlias() {
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(TestBean.class));
|
||||
lbf.registerAlias("test", "testAlias");
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(NestedTestBean.class));
|
||||
lbf.registerAlias("test", "testAlias");
|
||||
assertThat(lbf.getBean("test")).isInstanceOf(NestedTestBean.class);
|
||||
assertThat(lbf.getBean("testAlias")).isInstanceOf(NestedTestBean.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void aliasChaining() {
|
||||
lbf.registerBeanDefinition("test", new RootBeanDefinition(NestedTestBean.class));
|
||||
lbf.registerAlias("test", "testAlias");
|
||||
lbf.registerAlias("testAlias", "testAlias2");
|
||||
lbf.registerAlias("testAlias2", "testAlias3");
|
||||
Object bean = lbf.getBean("test");
|
||||
assertThat(lbf.getBean("testAlias")).isSameAs(bean);
|
||||
assertThat(lbf.getBean("testAlias2")).isSameAs(bean);
|
||||
assertThat(lbf.getBean("testAlias3")).isSameAs(bean);
|
||||
}
|
||||
|
||||
@Test
|
||||
void beanReferenceWithNewSyntax() {
|
||||
Properties p = new Properties();
|
||||
|
||||
@@ -114,6 +114,27 @@ public class BeanDefinitionTests {
|
||||
assertThat(bd.hashCode() == otherBd.hashCode()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void genericBeanDefinitionEquality() {
|
||||
GenericBeanDefinition bd = new GenericBeanDefinition();
|
||||
bd.setParentName("parent");
|
||||
bd.setScope("request");
|
||||
bd.setAbstract(true);
|
||||
bd.setLazyInit(true);
|
||||
GenericBeanDefinition otherBd = new GenericBeanDefinition();
|
||||
otherBd.setScope("request");
|
||||
otherBd.setAbstract(true);
|
||||
otherBd.setLazyInit(true);
|
||||
boolean condition1 = !bd.equals(otherBd);
|
||||
assertTrue(condition1);
|
||||
boolean condition = !otherBd.equals(bd);
|
||||
assertTrue(condition);
|
||||
otherBd.setParentName("parent");
|
||||
assertTrue(bd.equals(otherBd));
|
||||
assertTrue(otherBd.equals(bd));
|
||||
assertTrue(bd.hashCode() == otherBd.hashCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void beanDefinitionHolderEquality() {
|
||||
RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
|
||||
|
||||
Reference in New Issue
Block a user