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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]