« Return to Thread: Injecting Spring Services into Struts 2 Actions

Re: Injecting Spring Services into Struts 2 Actions

by Laurie Harper :: Rate this Message:

Reply to Author | View in Thread

Is what a Spring 2.5 thing? AFAIK, you need to set the action mapping's
'class' attribute to the Spring bean identifier to get injection via the
spring plugin... but maybe I'm just tiered and not thinking it through :-/

L.

Dave Newton wrote:

> Is this a Spring 2.5 thing? I'm not using 2.5 yet and haven't had to do
> anything to get my actions to be injected with Spring beans (at least I
> don't think so; I remember having to set the object factory to "spring"
> in earlier days?)
>
> Dave
>
> --- Laurie Harper <laurie@...> wrote:
>
>> Asleson, Ryan wrote:
>>>  
>>> Hello,
>>>  
>>> I found this guide to injecting Spring beans into Struts 2 Actions:
>>>  
>>> http://cwiki.apache.org/WW/spring.html
>>>  
>>> According to the red box at the bottom of the document, the Struts
>> 2
>>> Action does not need to be registered with Spring.  So far so good.
>> Er, that's not as clear as it could be; I believe it means that
>> 'registering Actions with Spring is not required *if you don't want
>> Spring dependency injection for that action*'. In other words, you
>> *do*
>> need Spring to know about the action if you want it to inject
>> dependencies.
>>
>>> However, I'm a little unclear as to how exactly it "knows" what
>> Spring
>>> beans to inject into the Struts 2 Action.  Assuming I have a Struts
>> 2
>>> Action that depends on a PersonService, I assume that the Struts 2
>>> Action would have a public mutator for the PersonService like this:
>>>  
>>> public void setPersonService(PersonService service) {
>>>     this.personService = service;
>>> }
>>>  
>>> How does the injection system "know" that this method should be
>> used for
>>> injecting a Spring bean?  Imagine that the Struts 2 Action has
>> several
>>> "set" methods, and that there are a number of configured Spring
>> beans.
>>> It would take way too long for the injection system to look through
>>> every "set" method on the Action and try to find a matching Spring
>> bean,
>>> especially if there are a lot of Spring beans (and there usually
>> are).
>>>  
>>> The document above includes this comment:
>>>  
>>> We strongly recommend that you find declarative ways of letting
>> Spring
>>> know what to provide for your actions.
>>>  
>>> But it doesn't give an example of how to let Spring know what to
>> provide
>>> to the actions.
>>>  
>>> So, the question is:  How do I tell Spring what beans need to be
>>> injected into the Action?
>> You can either configure the action as a Spring bean in your
>> applicationContext.xml and use the normal declarative syntax to do
>> this,
>> or you can use Spring 2.5's @Component, @Resource, etc. annotations
>> and
>> skip the XML. But you do need to do one or the other.
>>
>> L.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@...
>> For additional commands, e-mail: user-help@...
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...

 « Return to Thread: Injecting Spring Services into Struts 2 Actions