[ 
https://issues.apache.org/struts/browse/WW-2558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Don Brown updated WW-2558:
--------------------------

    Fix Version/s: 2.2.x

> Spring plugin can't find Action classes configured by Spring 2.5 annotations
> ----------------------------------------------------------------------------
>
>                 Key: WW-2558
>                 URL: https://issues.apache.org/struts/browse/WW-2558
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Plugin - Spring
>    Affects Versions: 2.0.11.1
>            Reporter: Brad Cupit
>            Priority: Trivial
>             Fix For: 2.2.x
>
>
> The Spring plugin looks up Spring beans based on the fully qualified class 
> name, and doesn't find Spring-managed Action classes configured by Spring 
> annotations. (Spring 2.5 can automatically find annotated beans instead of 
> using xml config). These annotated beans have short bean names, meaning 
> "object" instead of java.lang.Object
> Instead, the Spring plugin instantiates the bean itself and follows the 
> autowire policy, but the bean is not managed by Spring.
> Ultimate Goal:
> Be able to use the Spring annotation config and the Struts Codebehind plugin 
> to eliminate xml configuration in Struts and Spring, and yet still have 
> Actions be fully Spring managed.
> There are three current workarounds:
> 1) let the Spring plugin instantiate and autowire Actions as it does now, but 
> can't use any AOP features for those Actions
> 2) configure the bean in struts.xml and provide the 'short' bean name as the 
> class name
> 3) configure the bean in a spring xml file and don't specify an id (the 
> default id is the fully qualified class name)
> None of these workarounds provide the ultimate goal of zero xml configuration 
> and full Spring integration.
> Proposed fix:
> Alter the Spring plugin to lookup the bean based on type instead of using the 
> class as the bean name. It could use ListableBeanFactory#getBeansOfType(), 
> and throw an exception if there is more than one bean for that Action class. 
> This could be configurable by a Struts constant (like 
> "struts.objectFactory.spring.lookup" whose values could be "byClass" or 
> "byName"). The changes could go in SpringObjectFactory#buildBean(String, Map, 
> boolean)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to