36
36
*/
37
37
public class BeanMethodPolymorphismTests {
38
38
39
+ @ Test
40
+ public void beanMethodDetectedOnSuperClass () {
41
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext (Config .class );
42
+ ctx .getBean ("testBean" , TestBean .class );
43
+ }
44
+
45
+ @ Test
46
+ public void beanMethodOverriding () {
47
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ();
48
+ ctx .register (OverridingConfig .class );
49
+ ctx .setAllowBeanDefinitionOverriding (false );
50
+ ctx .refresh ();
51
+ assertFalse (ctx .getDefaultListableBeanFactory ().containsSingleton ("testBean" ));
52
+ assertEquals ("overridden" , ctx .getBean ("testBean" , TestBean .class ).toString ());
53
+ assertTrue (ctx .getDefaultListableBeanFactory ().containsSingleton ("testBean" ));
54
+ }
55
+
39
56
@ Test
40
57
public void beanMethodOverloadingWithoutInheritance () {
41
58
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ();
@@ -112,15 +129,6 @@ public void beanMethodShadowing() {
112
129
assertThat (ctx .getBean (String .class ), equalTo ("shadow" ));
113
130
}
114
131
115
- @ Test
116
- public void beanMethodsDetectedOnSuperClass () {
117
- DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory ();
118
- beanFactory .registerBeanDefinition ("config" , new RootBeanDefinition (Config .class ));
119
- ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor ();
120
- pp .postProcessBeanFactory (beanFactory );
121
- beanFactory .getBean ("testBean" , TestBean .class );
122
- }
123
-
124
132
125
133
@ Configuration
126
134
static class BaseConfig {
@@ -129,7 +137,6 @@ static class BaseConfig {
129
137
public TestBean testBean () {
130
138
return new TestBean ();
131
139
}
132
-
133
140
}
134
141
135
142
@@ -138,6 +145,22 @@ static class Config extends BaseConfig {
138
145
}
139
146
140
147
148
+ @ Configuration
149
+ static class OverridingConfig extends BaseConfig {
150
+
151
+ @ Bean @ Lazy
152
+ @ Override
153
+ public TestBean testBean () {
154
+ return new TestBean () {
155
+ @ Override
156
+ public String toString () {
157
+ return "overridden" ;
158
+ }
159
+ };
160
+ }
161
+ }
162
+
163
+
141
164
@ Configuration
142
165
static class ConfigWithOverloading {
143
166
0 commit comments