struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Laurie Harper <lau...@holoweb.net>
Subject Re: Injecting Spring Services into Struts 2 Actions
Date Thu, 08 May 2008 16:57:07 GMT
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


Mime
View raw message