From 8f81a12236343a26200d9ba235512c720b306191 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 5 Nov 2013 01:09:51 +0100 Subject: [PATCH] Added actual overriding test to BeanMethodPolymorphismTests Issue: SPR-10992 --- .../BeanMethodPolymorphismTests.java | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java b/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java index c11e66e71f..ea6c84aa9a 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java @@ -36,6 +36,23 @@ import static org.junit.Assert.*; */ public class BeanMethodPolymorphismTests { + @Test + public void beanMethodDetectedOnSuperClass() { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class); + ctx.getBean("testBean", TestBean.class); + } + + @Test + public void beanMethodOverriding() { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + ctx.register(OverridingConfig.class); + ctx.setAllowBeanDefinitionOverriding(false); + ctx.refresh(); + assertFalse(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")); + assertEquals("overridden", ctx.getBean("testBean", TestBean.class).toString()); + assertTrue(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")); + } + @Test public void beanMethodOverloadingWithoutInheritance() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); @@ -112,15 +129,6 @@ public class BeanMethodPolymorphismTests { assertThat(ctx.getBean(String.class), equalTo("shadow")); } - @Test - public void beanMethodsDetectedOnSuperClass() { - DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); - beanFactory.registerBeanDefinition("config", new RootBeanDefinition(Config.class)); - ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor(); - pp.postProcessBeanFactory(beanFactory); - beanFactory.getBean("testBean", TestBean.class); - } - @Configuration static class BaseConfig { @@ -129,7 +137,6 @@ public class BeanMethodPolymorphismTests { public TestBean testBean() { return new TestBean(); } - } @@ -138,6 +145,22 @@ public class BeanMethodPolymorphismTests { } + @Configuration + static class OverridingConfig extends BaseConfig { + + @Bean @Lazy + @Override + public TestBean testBean() { + return new TestBean() { + @Override + public String toString() { + return "overridden"; + } + }; + } + } + + @Configuration static class ConfigWithOverloading {