You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I try to override a constructor arg by name in a child bean definition an exception arises which does not arise when I override the constructor arg by index.
I could be mistaken but I see this as a bug because if I can inherit by name and override by index, then I should also be able to override by name.
Specifically I've created an abstract bean definition as follows:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'concretePerson' defined in class path resource [test/spring/applicationContext.xml]:
2 constructor arguments specified but no matching constructor found in bean 'concretePerson'
(hint:specify index/type/name arguments for simple parameters to avoid type ambiguities)
at
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:171)
...
at test.spring.Main.main(Main.java:9)
Thought it would be worth referencing #10181 from this JIRA since part of the feature request in #10181 refers to constructor overriding. Of course #10181 is dealing with bean definition overriding rather than bean definition inheritance, however they are a little related.
Good point: Even if we're matching constructor argument names somewhat leniently (because they might not be available at runtime, hence the <constructor-arg> name values might be there for descriptive purposes only), it does make sense to allow for them to be overridden by name in child bean definitions.
Jeffrey Sinclair opened SPR-6463 and commented
When I try to override a constructor arg by name in a child bean definition an exception arises which does not arise when I override the constructor arg by index.
I could be mistaken but I see this as a bug because if I can inherit by name and override by index, then I should also be able to override by name.
Specifically I've created an abstract bean definition as follows:
I've then tried to create a concrete bean definition by overriding the named constructor arg:
This throws the following exception:
Affects: 3.0 RC2
Issue Links:
Referenced from: commits 666700f
The text was updated successfully, but these errors were encountered: