Prevent @Bean method overloading by default (with enforceUniqueMethods flag)
Closes gh-22609
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -41,7 +41,7 @@ public class BeanMethodPolymorphismTests {
|
||||
@Test
|
||||
public void beanMethodDetectedOnSuperClass() {
|
||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
|
||||
assertThat(ctx.getBean("testBean", TestBean.class)).isNotNull();
|
||||
assertThat(ctx.getBean("testBean", BaseTestBean.class)).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -51,7 +51,7 @@ public class BeanMethodPolymorphismTests {
|
||||
ctx.setAllowBeanDefinitionOverriding(false);
|
||||
ctx.refresh();
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isFalse();
|
||||
assertThat(ctx.getBean("testBean", TestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getBean("testBean", BaseTestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isTrue();
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public class BeanMethodPolymorphismTests {
|
||||
ctx.setAllowBeanDefinitionOverriding(false);
|
||||
ctx.refresh();
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isFalse();
|
||||
assertThat(ctx.getBean("testBean", TestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getBean("testBean", BaseTestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isTrue();
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public class BeanMethodPolymorphismTests {
|
||||
ctx.setAllowBeanDefinitionOverriding(false);
|
||||
ctx.refresh();
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isFalse();
|
||||
assertThat(ctx.getBean("testBean", TestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getBean("testBean", BaseTestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isTrue();
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ public class BeanMethodPolymorphismTests {
|
||||
ctx.setAllowBeanDefinitionOverriding(false);
|
||||
ctx.refresh();
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isFalse();
|
||||
assertThat(ctx.getBean("testBean", TestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getBean("testBean", BaseTestBean.class).toString()).isEqualTo("overridden");
|
||||
assertThat(ctx.getDefaultListableBeanFactory().containsSingleton("testBean")).isTrue();
|
||||
}
|
||||
|
||||
@@ -171,7 +171,15 @@ public class BeanMethodPolymorphismTests {
|
||||
ctx.register(AnnotationAwareAspectJAutoProxyCreator.class);
|
||||
ctx.register(TestAdvisor.class);
|
||||
ctx.refresh();
|
||||
ctx.getBean("testBean", TestBean.class);
|
||||
ctx.getBean("testBean", BaseTestBean.class);
|
||||
}
|
||||
|
||||
|
||||
static class BaseTestBean {
|
||||
}
|
||||
|
||||
|
||||
static class ExtendedTestBean extends BaseTestBean {
|
||||
}
|
||||
|
||||
|
||||
@@ -179,8 +187,8 @@ public class BeanMethodPolymorphismTests {
|
||||
static class BaseConfig {
|
||||
|
||||
@Bean
|
||||
public TestBean testBean() {
|
||||
return new TestBean();
|
||||
public BaseTestBean testBean() {
|
||||
return new BaseTestBean();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,8 +203,8 @@ public class BeanMethodPolymorphismTests {
|
||||
|
||||
@Bean @Lazy
|
||||
@Override
|
||||
public TestBean testBean() {
|
||||
return new TestBean() {
|
||||
public BaseTestBean testBean() {
|
||||
return new BaseTestBean() {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "overridden";
|
||||
@@ -206,10 +214,6 @@ public class BeanMethodPolymorphismTests {
|
||||
}
|
||||
|
||||
|
||||
static class ExtendedTestBean extends TestBean {
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
static class NarrowedOverridingConfig extends BaseConfig {
|
||||
|
||||
@@ -226,7 +230,7 @@ public class BeanMethodPolymorphismTests {
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@Configuration(enforceUniqueMethods = false)
|
||||
static class ConfigWithOverloading {
|
||||
|
||||
@Bean
|
||||
@@ -241,7 +245,7 @@ public class BeanMethodPolymorphismTests {
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@Configuration(enforceUniqueMethods = false)
|
||||
static class ConfigWithOverloadingAndAdditionalMetadata {
|
||||
|
||||
@Bean @Lazy
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -626,7 +626,7 @@ public class ConfigurationClassProcessingTests {
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@Configuration(enforceUniqueMethods = false)
|
||||
public static class OverloadedBeanMismatch {
|
||||
|
||||
@Bean(name = "other")
|
||||
|
||||
Reference in New Issue
Block a user