--- Laurie Harper <[EMAIL PROTECTED]> 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...
Oh; I wonder why I don't have to do that. My understanding was that they only need to be declared in the Spring config file if you wanted to configure them manually. {quote} When an object is to be created, it uses the class attribute in the Struts configuration to correspond to the id attribute in the Spring configuration. *If not found, the class will try to be created as usual, then be autowired by Spring.* {quote} Dave > 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 <[EMAIL PROTECTED]> 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. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]