在Struts中整合Spring的IoC支持是一件十分简单的事情让我们一步一步来实现
)复制strutsspringpluginxxxjar和相应的springjar到/WEBINF/lib目录下
)在strutsproperties中设置strutsobjectFactory属性值
strutsproperties
strutsobjectFactory = spring
或者是在XML文件中进行常量配置
strutsxml
<struts>
<constant name=strutsobjectFactory value=spring />
</struts>
)配置Spring监听器
webxml
<listener>
<listenerclass>orgsprntextContextLoaderListener</listenerclass>
</listener>
通过Spring配置来注册对象
applicationContextxml
<?xml version= encoding=UTF?>
<!DOCTYPE beans PUBLIC
//SPRING//DTD BEAN//EN
beansdtd>
<beans defaultautowire=autodetect>
<bean id=hello class=hpfyeahstrutsspringHelloWorldAction/>
</beans>
当然你也可以拥有更多的Spring配置文件在webxml中进行下列设置从而使Spring的ApplicationContext通过匹配所给定模式的文件来初始化对象
webxml
<! 用来定位Spring XML文件的上下文配置 >
<contextparam>
<paramname>contextConfigLocation</paramname>
<paramvalue>
/WEBINF/applicationContext*xmlclasspath*:applicationContext*xml
</paramvalue>
</contextparam>
)修改你的Struts配置文件
strutsxml
<!DOCTYPE struts PUBLIC
//Apache Software Foundation//DTD Struts Configuration //EN
dtd>
<struts>
<include file=strutsdefaultxml/>
<package name=default extends=strutsdefault>
<action name=pureStruts class=hpfyeahstrutsspringHelloWorldAction>
<result>hellojsp</result>
</action>
<action name=springStruts class=hello>
<result>hellojsp</result>
</action>
</struts>
默认情况下Spring从上面显示的applicationContextxml文件中寻找为hello所做的配置
)好了现在你的Struts和Spring就能正常的一起工作了有几个配置技术点需要详细说明下
装配模式你可以通过设置修改strutsproperties中下列属性的值来改变装配模式
name 按照你的action的属性的名字和Spring里的bean的名字匹配如果匹配就自动装配这是缺省的
type 按照你的action的属性的类型在Spring注册的bean中查找如果相同就自动装配这需要你在Spring中仅注册了一个此类型的bean
auto Spring会试图自动监测来找到最好的方法自动装配你的action
constructor Spring会自动装配bean的构造函数的参数
是否使用类缓存你可以通过设置修改strutsproperties中下列属性的值来改变是否使用Spring自身的类缓存机制可以设定的值为true或false默认为true
strutsproperties
strutsobjectFactoryspringuseClassCache = false