当指定strutsobjectFactory为spring时struts框架就会把bean转发给spring来创建装配注入但是bean创建完成之后还是由struts容器来管理其生命周期配置方式
()strutsxml中
xml 代码
<constantname=strutsobjectFactoryvalue=spring/>
()strutsproperties中
java 代码
strutsobjectFactory=spring
通常情况下这样子就够了然后在struts的actionmapping配置文件中如下
xml 代码
<actionname=userclass=commyappadminwebactionuserUserAction></action>
即可如果在Action中有依赖于其它的BEAN也会被自动注入进来这时候Action实例是以prototype方式创建的SPRING会为每个请求创建一个ACTION的实例
在某些时候你可能希望不仅仅让SPRING创建和装配Action对象还希望让SPRING完全管理这些对象如希望使用AOP或者希望使用acegi时这时候只需要在spring的配置文件中定义这些action 即可如在applicationContextxml文件中
xml 代码
<beanid=userclass=commyappwebactionuserUserAction/>
然后在actionmapping中指定class=user即可
需要注意的一个地方Spring中的缺省作用域是Singleton作用域而往往Action属于有状态的bean应该使用prototype作用域<bean id=user class=commyappwebactionuserUserAction singleton=false/> 如果忽略这个细节在我们方便实用setget方法处理数据的时候可能会有线程安全上的风险