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