@@ -414,6 +414,43 @@ void beanDefinitionWithClassArrayFactoryMethodArgAndAnotherMatchingConstructor()
414
414
String [].class ));
415
415
}
416
416
417
+ @ Test
418
+ void beanDefinitionWithMultiConstructorSimilarArgumentsAndMatchingValues () throws NoSuchMethodException {
419
+ DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory ();
420
+ BeanDefinition beanDefinition = BeanDefinitionBuilder
421
+ .rootBeanDefinition (MultiConstructorSimilarArgumentsSample .class )
422
+ .addConstructorArgValue ("Test" ).addConstructorArgValue (1 ).addConstructorArgValue (2 )
423
+ .getBeanDefinition ();
424
+ Executable executable = resolve (beanFactory , beanDefinition );
425
+ assertThat (executable ).isNotNull ()
426
+ .isEqualTo (MultiConstructorSimilarArgumentsSample .class
427
+ .getDeclaredConstructor (String .class , Integer .class , Integer .class ));
428
+ }
429
+
430
+ @ Test
431
+ void beanDefinitionWithMultiConstructorSimilarArgumentsAndNullValueForCommonArgument () throws NoSuchMethodException {
432
+ DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory ();
433
+ BeanDefinition beanDefinition = BeanDefinitionBuilder
434
+ .rootBeanDefinition (MultiConstructorSimilarArgumentsSample .class )
435
+ .addConstructorArgValue (null ).addConstructorArgValue (null ).addConstructorArgValue ("Test" )
436
+ .getBeanDefinition ();
437
+ Executable executable = resolve (beanFactory , beanDefinition );
438
+ assertThat (executable ).isNotNull ()
439
+ .isEqualTo (MultiConstructorSimilarArgumentsSample .class
440
+ .getDeclaredConstructor (String .class , Integer .class , String .class ));
441
+ }
442
+
443
+ @ Test
444
+ void beanDefinitionWithMultiConstructorSimilarArgumentsAndNullValueForSpecificArgument () throws NoSuchMethodException {
445
+ DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory ();
446
+ BeanDefinition beanDefinition = BeanDefinitionBuilder
447
+ .rootBeanDefinition (MultiConstructorSimilarArgumentsSample .class )
448
+ .addConstructorArgValue (null ).addConstructorArgValue (1 ).addConstructorArgValue (null )
449
+ .getBeanDefinition ();
450
+ assertThatIllegalStateException ().isThrownBy (() -> resolve (beanFactory , beanDefinition ))
451
+ .withMessageContaining (MultiConstructorSimilarArgumentsSample .class .getName ());
452
+ }
453
+
417
454
@ Test
418
455
void beanDefinitionWithMultiArgConstructorAndPrimitiveConversion () throws NoSuchMethodException {
419
456
BeanDefinition beanDefinition = BeanDefinitionBuilder
@@ -534,6 +571,15 @@ static class MultiConstructorClassArraySample {
534
571
}
535
572
}
536
573
574
+ static class MultiConstructorSimilarArgumentsSample {
575
+
576
+ MultiConstructorSimilarArgumentsSample (String name , Integer counter , String value ) {
577
+ }
578
+
579
+ MultiConstructorSimilarArgumentsSample (String name , Integer counter , Integer value ) {
580
+ }
581
+ }
582
+
537
583
@ SuppressWarnings ("unused" )
538
584
static class ClassArrayFactoryMethodSample {
539
585
0 commit comments