@@ -110,7 +110,7 @@ void aliasesAreRespectedWhenConfiguredViaValueAttribute() {
110
110
111
111
private void aliasesAreRespected (Class <?> testClass , Supplier <TestBean > testBeanSupplier , String beanName ) {
112
112
TestBean testBean = testBeanSupplier .get ();
113
- BeanFactory factory = initBeanFactory (testClass );
113
+ BeanFactory factory = initBeanFactory (false , testClass );
114
114
115
115
assertThat (factory .getBean (beanName )).isSameAs (testBean );
116
116
Arrays .stream (factory .getAliases (beanName )).map (factory ::getBean ).forEach (alias -> assertThat (alias ).isSameAs (testBean ));
@@ -141,30 +141,30 @@ void configWithSetWithProviderImplementation() {
141
141
@ Test
142
142
void finalBeanMethod () {
143
143
assertThatExceptionOfType (BeanDefinitionParsingException .class ).isThrownBy (() ->
144
- initBeanFactory (ConfigWithFinalBean .class ));
144
+ initBeanFactory (false , ConfigWithFinalBean .class ));
145
145
}
146
146
147
147
@ Test
148
148
void finalBeanMethodWithoutProxy () {
149
- initBeanFactory (ConfigWithFinalBeanWithoutProxy .class );
149
+ initBeanFactory (false , ConfigWithFinalBeanWithoutProxy .class );
150
150
}
151
151
152
152
@ Test // gh-31007
153
153
void voidBeanMethod () {
154
154
assertThatExceptionOfType (BeanDefinitionParsingException .class ).isThrownBy (() ->
155
- initBeanFactory (ConfigWithVoidBean .class ));
155
+ initBeanFactory (false , ConfigWithVoidBean .class ));
156
156
}
157
157
158
158
@ Test
159
159
void simplestPossibleConfig () {
160
- BeanFactory factory = initBeanFactory (SimplestPossibleConfig .class );
160
+ BeanFactory factory = initBeanFactory (false , SimplestPossibleConfig .class );
161
161
String stringBean = factory .getBean ("stringBean" , String .class );
162
162
assertThat (stringBean ).isEqualTo ("foo" );
163
163
}
164
164
165
165
@ Test
166
166
void configWithObjectReturnType () {
167
- BeanFactory factory = initBeanFactory (ConfigWithNonSpecificReturnTypes .class );
167
+ BeanFactory factory = initBeanFactory (false , ConfigWithNonSpecificReturnTypes .class );
168
168
assertThat (factory .getType ("stringBean" )).isEqualTo (Object .class );
169
169
assertThat (factory .isTypeMatch ("stringBean" , String .class )).isFalse ();
170
170
String stringBean = factory .getBean ("stringBean" , String .class );
@@ -173,7 +173,7 @@ void configWithObjectReturnType() {
173
173
174
174
@ Test
175
175
void configWithFactoryBeanReturnType () {
176
- ListableBeanFactory factory = initBeanFactory (ConfigWithNonSpecificReturnTypes .class );
176
+ ListableBeanFactory factory = initBeanFactory (false , ConfigWithNonSpecificReturnTypes .class );
177
177
assertThat (factory .getType ("factoryBean" )).isEqualTo (List .class );
178
178
assertThat (factory .isTypeMatch ("factoryBean" , List .class )).isTrue ();
179
179
assertThat (factory .getType ("&factoryBean" )).isEqualTo (FactoryBean .class );
@@ -201,7 +201,7 @@ void configWithFactoryBeanReturnType() {
201
201
202
202
@ Test
203
203
void configurationWithPrototypeScopedBeans () {
204
- BeanFactory factory = initBeanFactory (ConfigWithPrototypeBean .class );
204
+ BeanFactory factory = initBeanFactory (false , ConfigWithPrototypeBean .class );
205
205
206
206
TestBean foo = factory .getBean ("foo" , TestBean .class );
207
207
ITestBean bar = factory .getBean ("bar" , ITestBean .class );
@@ -213,7 +213,7 @@ void configurationWithPrototypeScopedBeans() {
213
213
214
214
@ Test
215
215
void configurationWithNullReference () {
216
- BeanFactory factory = initBeanFactory (ConfigWithNullReference .class );
216
+ BeanFactory factory = initBeanFactory (false , ConfigWithNullReference .class );
217
217
218
218
TestBean foo = factory .getBean ("foo" , TestBean .class );
219
219
assertThat (factory .getBean ("bar" )).isEqualTo (null );
@@ -223,7 +223,15 @@ void configurationWithNullReference() {
223
223
@ Test // gh-33330
224
224
void configurationWithMethodNameMismatch () {
225
225
assertThatExceptionOfType (BeanDefinitionOverrideException .class )
226
- .isThrownBy (() -> initBeanFactory (ConfigWithMethodNameMismatch .class ));
226
+ .isThrownBy (() -> initBeanFactory (false , ConfigWithMethodNameMismatch .class ));
227
+ }
228
+
229
+ @ Test // gh-33920
230
+ void configurationWithMethodNameMismatchAndOverridingAllowed () {
231
+ BeanFactory factory = initBeanFactory (true , ConfigWithMethodNameMismatch .class );
232
+
233
+ SpousyTestBean foo = factory .getBean ("foo" , SpousyTestBean .class );
234
+ assertThat (foo .getName ()).isEqualTo ("foo1" );
227
235
}
228
236
229
237
@ Test
@@ -353,13 +361,13 @@ void autowiringWithDynamicPrototypeBeanClass() {
353
361
* When complete, the factory is ready to service requests for any {@link Bean} methods
354
362
* declared by {@code configClasses}.
355
363
*/
356
- private DefaultListableBeanFactory initBeanFactory (Class <?>... configClasses ) {
364
+ private DefaultListableBeanFactory initBeanFactory (boolean allowOverriding , Class <?>... configClasses ) {
357
365
DefaultListableBeanFactory factory = new DefaultListableBeanFactory ();
358
366
for (Class <?> configClass : configClasses ) {
359
367
String configBeanName = configClass .getName ();
360
368
factory .registerBeanDefinition (configBeanName , new RootBeanDefinition (configClass ));
361
369
}
362
- factory .setAllowBeanDefinitionOverriding (false );
370
+ factory .setAllowBeanDefinitionOverriding (allowOverriding );
363
371
ConfigurationClassPostProcessor ccpp = new ConfigurationClassPostProcessor ();
364
372
ccpp .postProcessBeanDefinitionRegistry (factory );
365
373
ccpp .postProcessBeanFactory (factory );
@@ -537,12 +545,12 @@ public TestBean bar() {
537
545
@ Configuration
538
546
static class ConfigWithMethodNameMismatch {
539
547
540
- @ Bean (name = "foo" ) public TestBean foo () {
541
- return new SpousyTestBean ("foo " );
548
+ @ Bean (name = "foo" ) public TestBean foo1 () {
549
+ return new SpousyTestBean ("foo1 " );
542
550
}
543
551
544
- @ Bean (name = "foo" ) public TestBean fooX () {
545
- return new SpousyTestBean ("fooX " );
552
+ @ Bean (name = "foo" ) public TestBean foo2 () {
553
+ return new SpousyTestBean ("foo2 " );
546
554
}
547
555
}
548
556
0 commit comments