struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Musachy Barroso" <musa...@gmail.com>
Subject Re: Injecting Spring Services into Struts 2 Actions
Date Fri, 09 May 2008 12:59:09 GMT
If you are refering to the annotations, yes they are an spring 2.5
thing (about time!).

musachy

On Fri, May 9, 2008 at 3:14 AM, Laurie Harper <laurie@holoweb.net> wrote:
> 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@holoweb.net> 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@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>



-- 
"Hey you! Would you help me to carry the stone?" Pink Floyd

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


Mime
View raw message