If you are using the Spring Framework with your App, you should be able to define your TextProvider, with all it's dependencies, as a Spring Bean, then when you define the <bean> in Struts use the Spring Bean ID instead of using the full class name. Struts will use that Spring Bean in place of creating a new one. (*Chris*)
On Mon, Oct 15, 2012 at 8:19 AM, Davis, Chad <chad.da...@emc.com> wrote: > > > > ActionSupport#getTextProviderSupport() uses the TextProviderFactory to > > obtain it's instance of a support object. Since it uses the di to > inject this into > > the factory, my custom version is correctly injected. However, I need to > > initialize my custom support object with a resource that it needs to > conduct > > its business. Note, the default TextPRoviderSupport also needs a couple > of > > resources, and those are initialized in the factory's createInstance( > Class > > class, LocaleProvider provider ). So, while I've injected my own class, > there > > doesn't seem to be a clean way to make sure that it's initialized > properly. > > Should I extend the factory to handle my class and init it too? Doesn't > seem > > very DI-ish . . . hardcoding type specific init logic, I mean. > > > > > > Or should I create an interceptor that will inject the correct > resources into > > my text support object? > > > > ActionSupport base on property injections so you cannot base on anything > > which is injectable - you cannot use getTextProvider during > initialisation time > > (construction time). You can implement your own ActionSupport with > > constructor injected TextProvider that should solve your problem. > > > > I'm not sure I follow you. Just for clarity, let me restate my problem. > I have written a custom extension of TextProviderSupport. I want to have > it > injected as the framework's default TextProvider. I have achieved this by > configuring it in struts.xml, declaring my implementation with a <bean/> > element and then setting the constant struts.xworkTextProvider to point at > my bean. > > This works, but my implementation needs to be properly injected. Right > now, it's being created with the default no-arg constructor. How can I > best have my dependencies injected when the framework creates this bean? > What are my options? > > I restate this because it seems that you are suggesting that I override > the ActionSupport base class inorder to achieve this. This seems to me to > be skipping the framework and simply creating and injecting my textprovider > myself. Perhaps I misunderstand. > >