From 7d37f2a0a4bfb6f0845219f9718dcdfe8caa135c Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Thu, 29 Feb 2024 17:08:34 +0800 Subject: [PATCH] Add test for @Fallback with BeanFactory.getBean(Class) --- .../BeanMethodQualificationTests.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/spring-context/src/test/java/org/springframework/context/annotation/configuration/BeanMethodQualificationTests.java b/spring-context/src/test/java/org/springframework/context/annotation/configuration/BeanMethodQualificationTests.java index 749586dfa5c3..67bb4bc3b881 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/configuration/BeanMethodQualificationTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/configuration/BeanMethodQualificationTests.java @@ -116,6 +116,19 @@ void primaryVersusFallback(Class configClass) { ctx.close(); } + /** + * One regular bean along with fallback beans is considered effective primary + */ + @Test + void effectivePrimary() { + AnnotationConfigApplicationContext ctx = context(EffectivePrimaryConfig.class); + + TestBean testBean = ctx.getBean(TestBean.class); + assertThat(testBean.getName()).isEqualTo("effective-primary"); + + ctx.close(); + } + @Test void customWithLazyResolution() { AnnotationConfigApplicationContext ctx = context(CustomConfig.class, CustomPojo.class); @@ -314,6 +327,24 @@ public TestBean testBean2x() { } } + @Configuration + static class EffectivePrimaryConfig { + + @Bean + public TestBean effectivePrimary() { + return new TestBean("effective-primary"); + } + + @Bean @Fallback + public TestBean fallback1() { + return new TestBean("fallback1"); + } + + @Bean @Fallback + public TestBean fallback2() { + return new TestBean("fallback2"); + } + } @Component @Lazy static class StandardPojo {