Skip to content

Commit 639af7b

Browse files
quaffjhoeller
authored andcommitted
Add tests to ensure bean definition flag "fallback" take precedence over "defaultCandidate"
Signed-off-by: Yanming Zhou <[email protected]>
1 parent 86d8163 commit 639af7b

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

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

+37
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,42 @@ 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 getBeanByTypeWithUniqueNonFallbackAndUniqueNonDefaultDefinition() {
1688+
RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class);
1689+
bd1.setLazyInit(true);
1690+
bd1.setFallback(true);
1691+
RootBeanDefinition bd2 = new RootBeanDefinition(TestBean.class);
1692+
bd2.setFallback(true);
1693+
bd2.setDefaultCandidate(false);
1694+
RootBeanDefinition bd3 = new RootBeanDefinition(TestBean.class);
1695+
bd3.setDefaultCandidate(false);
1696+
lbf.registerBeanDefinition("bd1", bd1);
1697+
lbf.registerBeanDefinition("bd2", bd2);
1698+
lbf.registerBeanDefinition("bd3", bd3);
1699+
1700+
TestBean bean = lbf.getBean(TestBean.class);
1701+
assertThat(bean.getBeanName()).isEqualTo("bd3");
1702+
assertThat(lbf.containsSingleton("bd1")).isFalse();
1703+
}
1704+
16681705
@Test
16691706
void getBeanByTypeWithUniqueNonDefaultDefinition() {
16701707
RootBeanDefinition bd1 = new RootBeanDefinition(TestBean.class);

0 commit comments

Comments
 (0)