Skip to content

Commit 143985e

Browse files
committed
Add tests for primary/fallback/defaultCandidate precedence
Closes gh-34449
1 parent 4bd280b commit 143985e

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java

+55
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
* @author Chris Beams
114114
* @author Phillip Webb
115115
* @author Stephane Nicoll
116+
* @author Yanming Zhou
116117
*/
117118
class DefaultListableBeanFactoryTests {
118119

@@ -1665,6 +1666,60 @@ void getBeanByTypeWithPrimary() {
16651666
assertThat(lbf.containsSingleton("bd1")).isFalse();
16661667
}
16671668

1669+
@Test
1670+
void getBeanByTypeWithUniqueNonFallbackDefinition() {
1671+
RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class);
1672+
bd1.setLazyInit(true);
1673+
bd1.setFallback(true);
1674+
RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class);
1675+
bd2.setFallback(true);
1676+
RootBeanDefinition bd3 = new RootBeanDefinition(TestBean.class);
1677+
lbf.registerBeanDefinition("bd1", bd1);
1678+
lbf.registerBeanDefinition("bd2", bd2);
1679+
lbf.registerBeanDefinition("bd3", bd3);
1680+
1681+
TestBean bean = lbf.getBean(TestBean.class);
1682+
assertThat(bean.getBeanName()).isEqualTo("bd3");
1683+
assertThat(lbf.containsSingleton("bd1")).isFalse();
1684+
}
1685+
1686+
@Test
1687+
void getBeanByTypeWithPrimaryAndUniqueNonFallbackDefinition() {
1688+
RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class);
1689+
bd1.setLazyInit(true);
1690+
bd1.setFallback(true);
1691+
RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class);
1692+
bd2.setPrimary(true);
1693+
bd2.setFallback(true);
1694+
RootBeanDefinition bd3 = new RootBeanDefinition(TestBean.class);
1695+
lbf.registerBeanDefinition("bd1", bd1);
1696+
lbf.registerBeanDefinition("bd2", bd2);
1697+
lbf.registerBeanDefinition("bd3", bd3);
1698+
1699+
TestBean bean = lbf.getBean(TestBean.class);
1700+
assertThat(bean.getBeanName()).isEqualTo("bd2");
1701+
assertThat(lbf.containsSingleton("bd1")).isFalse();
1702+
}
1703+
1704+
@Test
1705+
void getBeanByTypeWithUniqueNonFallbackAndUniqueNonDefaultDefinition() {
1706+
RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class);
1707+
bd1.setLazyInit(true);
1708+
bd1.setFallback(true);
1709+
RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class);
1710+
bd2.setFallback(true);
1711+
bd2.setDefaultCandidate(false);
1712+
RootBeanDefinition bd3 = new RootBeanDefinition(TestBean.class);
1713+
bd3.setDefaultCandidate(false);
1714+
lbf.registerBeanDefinition("bd1", bd1);
1715+
lbf.registerBeanDefinition("bd2", bd2);
1716+
lbf.registerBeanDefinition("bd3", bd3);
1717+
1718+
TestBean bean = lbf.getBean(TestBean.class);
1719+
assertThat(bean.getBeanName()).isEqualTo("bd3");
1720+
assertThat(lbf.containsSingleton("bd1")).isFalse();
1721+
}
1722+
16681723
@Test
16691724
void getBeanByTypeWithUniqueNonDefaultDefinition() {
16701725
RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class);

0 commit comments

Comments
 (0)