2012-06-14 113 views
2

我有一个基于struts2(主要使用注释)的遗留Web应用程序。在调试时,我发现所有依赖项(如服务层和dao层) 都是在struts 2 action中自动注入的。我期待在struts.xml中必须有一个弹簧拦截器,它必须这样做。如何依赖注入struts2 action with spring?

但是我没有在那里发现任何弹簧相关的拦截器。也在web.xml我没有找到任何相关的东西,必须做这种工作。 我不知道如何依赖(与春季)在Struts2的行动注入...

我可以看到struts2-convention-plugin-2.2.3.1.jar文件中的类路径。这是否意味着filterDispatcher在运行时查找此jar文件,如果发现它,请在操作中注入依赖文件。在此过程中,任何拦截器是否也有帮助?

+0

我们可以看到,有注入到他们的依赖对象的实例配置的例子,? –

+0

所以你说在web.xml中没有定义spring侦听器? – fmucar

+0

@fmucar我在web.xml中看到了ContextLoaderListener,它读取了web.xml中参数contextConfigLocation参数给出的xam文件。但是,这将仅实例化单身bean,而不是原型或请求范围。对?要注入原型bean,必须通过拦截器或插件来完成。 –

回答

3

请参阅的struts2-spring-plugin-x.x.x.x.jarstruts-plugin.xml,你可以找到的配置有关对象工厂和自动装配拦截。它使用struts2的插件功能,并且您可以从Struts Guide中搜索“插件”以获取详细信息。

+1

沉是正确的。 ObjectFactory负责创建Struts2使用的所有动作,拦截器,结果和类型转换器。默认情况下,Struts2使用反射来创建这些对象,但是有一些插件可以让Spring和Guice允许这些框架创建对象。 –

0

必须有一个拦截器,它在动作类之前执行,并使用Java反射API执行依赖注入..或Struts 2 Reflection工具..http://struts.apache.org/2.3.4 /struts2-plugins/struts2-convention-plugin/apidocs/org/apache/struts2/convention/ReflectionTools.html 检查拦截器堆栈。

+0

rajesh我可以在类路径中看到struts2-convention-plugin-2.2.3.1.jar文件。它是否意味着filterDispatcher在运行时查找这个jar,如果它发现它,在action.Right中注入依赖关系?在这个过程中,任何Interceptor是否也有帮助? –