Hi,

We just updated the Struts 2 Guice plugin so that it will be compatible with
Guice 3.  However, the main class of the plugin,
Struts2Factory<http://code.google.com/p/google-guice/source/browse/trunk/extensions/struts2/src/com/google/inject/struts2/Struts2Factory.java>,
is being created via xwork's injection mechanism and then statically
injected by Guice so that we can get a reference to the Guice injector.
 We'd like to avoid static injection whenever possible, so I'm wondering if
anyone more familiar with Struts/XWork has a better idea.

In 
struts-plugin.xml<http://code.google.com/p/google-guice/source/browse/trunk/extensions/struts2/src/struts-plugin.xml>we
overrode the default ObjectFactory:
  <bean type="com.opensymphony.xwork2.ObjectFactory"
        name="guice"
        class="com.google.inject.struts2.Struts2Factory"/>

We now require that the user create a
Struts2GuicePluginModule<http://code.google.com/p/google-guice/source/browse/trunk/extensions/struts2/src/com/google/inject/struts2/Struts2GuicePluginModule.java>when
setting
up their 
GuiceServletContextListener<http://code.google.com/p/google-guice/source/browse/trunk/extensions/struts2/example/src/com/google/inject/struts2/example/ExampleListener.java>
and
this will statically inject the Guice Injector into the
Struts2Factory<http://code.google.com/p/google-guice/source/browse/trunk/extensions/struts2/src/com/google/inject/struts2/Struts2Factory.java>
.
Is there anyway to set the Struts2Factory as the Object factory without
specifying it in the xml?  It be nice if we could do this in code somehow so
that we could provide an instance of the Guice injector.  Or perhaps after
the object factory is created, is there some way that we can get a reference
to it and manually insert the injector ourselves to avoid the use of static
injection?

Thanks,
Ben

Reply via email to