我正在用为另一个项目开发的Spring服务bean替换现有旧的Struts2项目中的服务层。
我只想将这些服务bean注入到我的Action类中。
是否需要使用Struts的Spring插件?或者,我可以像其他任何应用程序一样将Spring添加到Struts web应用程序中(ContextLoaderListener、applicationContext.xml、context:component scan)?
我是否缺少Struts-Spring插件以另一种方式帮助我的原因?
非常感谢!
好吧,你可以做你在问题中描述的大部分事情,因为S2和Struts2完全看不到服务层,而不在乎你如何创建服务层实例和其他事情。
我看到使用Struts2-Spring插件的好处是将Struts2相关内容的创建委托给Spring,如Action
类创建、Interceptors
、Results
等。
我的建议是使用插件,因为你将在你的应用程序中使用Spring,所以它非常好,非常灵活,也很强大,可以使用Spring DI的力量来创建S2所需的对象,否则S2将使用自己的数据创建工厂来创建框架组件。
为什么不使用Spring插件?
它本质上是不可见的,使用Spring来创建您的操作(包括注入其他Spring Bean)等。
Guice的@Inject
对Springbeans、AFAIK一无所知,所以你需要手动命名类,它们会通过普通的Java/Gice机制实例化,不会注入它们自己的Spring依赖项(除非你手动或通过AOP或其他方式)。
在测试中,您还需要使用非Spring机制来进行注入,这很好,但除非您提供更多关于用例的详细信息,否则我认为没有理由绕过Spring插件提供的开箱即用的功能。