Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
Spring 2.5.5
Description
This applies as of the released 5.0.16.
SpringModuleDef uses BeanFactoryUtils.beanNamesIncludingAncestors(context) to get the list of bean names to inject into Tapestry service registry.
For factory beans, this method returns the bean name prefixed by &
Later calls to context.getBean() using this name return the factory bean instance, rather than the target object needed by the application.
Suggested fix:
Replace
for (final String beanName : BeanFactoryUtils.beanNamesIncludingAncestors(context))
{
with
for (final String candidate : BeanFactoryUtils.beanNamesIncludingAncestors(context))
{
final String beanName = (candidate.startsWith("&", candidate.subString(1), candidate);