我有struts xml,其中我创建了一个动作说Baseaction。我需要注入应用程序上下文文件中定义的所有bean。
我正在使用struts2 spring插件。我可以单独从spring应用程序上下文xml文件中注入所有bean依赖项。
谢谢, Nilesh制作
答案 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花费一些性能。