@@ -414,6 +414,43 @@ void beanDefinitionWithClassArrayFactoryMethodArgAndAnotherMatchingConstructor()
414414 String [].class ));
415415 }
416416
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+
417454 @ Test
418455 void beanDefinitionWithMultiArgConstructorAndPrimitiveConversion () throws NoSuchMethodException {
419456 BeanDefinition beanDefinition = BeanDefinitionBuilder
@@ -534,6 +571,15 @@ static class MultiConstructorClassArraySample {
534571 }
535572 }
536573
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+
537583 @ SuppressWarnings ("unused" )
538584 static class ClassArrayFactoryMethodSample {
539585
0 commit comments