我可以从struts操作中注入多个spring依赖项

时间:2014-10-22 13:59:50

标签: spring struts2

我有struts xml,其中我创建了一个动作说Baseaction。我需要注入应用程序上下文文件中定义的所有bean。

我正在使用struts2 spring插件。我可以单独从spring应用程序上下文xml文件中注入所有bean依赖项。

谢谢, Nilesh制作

1 个答案:

答案 0 :(得分:0)

是的,你可以。

Struts.xml

中将Spring设置为Struts objectFactory
<struts>
  <constant name="struts.objectFactory" value="spring" />
  ...
</struts>

web.xml

中声明Spring监听器
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

由于默认的自动线路策略是按名称进行的,因此只需为要在该Action中注入的每个bean提供一个带有setter的Action属性。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
                       "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="autodetect">
    <bean id="fooManager" class="com.acme.FooManager" 
       scope="prototype"/>
    ...
</beans>

详细了解documentation

如果您需要在操作中注入所有您的bean,请在该操作中声明所有相应的属性和设置者。

这个btw很奇怪,因为如果BaseAction将被所有其他操作扩展,那么其他每个操作都不太可能需要所有 bean ...你应该定义bean在需要它们的行动中;这听起来有点懒惰,这会让你的webapp花费一些性能。