1

我正在用为另一个项目开发的 Spring 服务 bean 替换现有的旧 Struts2 项目中的服务层。

我只想将这些服务 bean @Inject 到我的 Action 类中。

是否需要使用 Struts 的 Spring Plugin?或者我可以像其他任何(ContextLoaderListener、applicationContext.xml、context:component-scan)一样将 Spring 添加到我的 Struts Web 应用程序中吗?

我是否错过了 Struts Spring 插件以另一种方式帮助我的某些原因?

非常感谢!

4

2 回答 2

1

Why wouldn't you use the Spring plugin?

It's essentially invisible, uses Spring to create your actions (including injecting other Spring beans), etc.

Guice's @Inject doesn't know anything about Spring beans, AFAIK, so you'd be naming classes manually, they'd be instantiated via normal Java/Guice mechanisms, wouldn't be injected with their own Spring dependencies (unless you did it manually, or via AOP, or whatever).

You'd also need to use non-Spring mechanisms for doing injection in testing, which is fine, but unless you provide more details regarding your usecase, I don't really see a reason to bypass the functionality the Spring plugin provides out-of-the-box.

于 2012-08-24T13:46:40.013 回答
1

好吧,您可以做您在问题中描述的大部分事情,因为服务层完全不适合 S2,而 Struts2 并不关心您如何创建服务层实例和其他事情。

我看到使用 Struts2-Spring 插件的好处是将 Struts2 相关事物的创建委托给 Spring,例如Action类创建InterceptorsResults

我的建议是使用该插件,因为您将在您的应用程序中使用 Spring,因此它非常好、灵活且强大,可以使用 Spring DI 的功能创建 S2 所需的所需对象,否则 S2 将使用自己的数据创建工厂创建框架组件。

于 2012-08-24T12:17:41.067 回答