在
Struts2中整合Spring的IoC支持是一件十分簡單的事情。讓我們一步一步來實現:
1)復制struts2-spring-plugin-x-x-x.jar和相應的spring.jar到/WEB-INF/lib目錄下。
2)在struts.properties中設置struts.objectFactory屬性值
struts.properties
struts.objectFactory = spring
或者是在XML文件中進行常量配置
struts.xml
<struts>
<constant name="struts.objectFactory" value="spring" />
</struts>
3)配置Spring監聽器
web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
通過Spring配置來注冊對象
applicationContext.xml
<?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="hello" class="hpfyeah.struts2.spring.HelloWorldAction"/>
</beans>
當然你也可以擁有更多的Spring配置文件。在web.xml中進行下列設置,從而使Spring的ApplicationContext通過匹配所給定模式的文件來初始化對象
web.xml
<!-- 用來定位Spring XML文件的上下文配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
</param-value>
</context-param>
4)修改你的Struts配置文件
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="pureStruts" class="hpfyeah.struts2.spring.HelloWorldAction">
<result>hello.jsp</result>
</action>
<action name="springStruts" class="hello">
<result>hello.jsp</result>
</action>
</struts>
默認情況下,Spring從上面顯示的applicationContext.xml文件中尋找為hello所做的配置
5)好了,現在你的
Struts2和Spring就能正常的一起工作了。有幾個配置技術點需要詳細說明下:
裝配模式。你可以通過設置修改struts.properties中下列屬性的值來改變裝配模式。
name 按照你的action的屬性的名字和Spring里的bean的名字匹配,如果匹配就自動裝配。這是缺省的
type 按照你的action的屬性的類型,在Spring注冊的bean中查找,如果相同就自動裝配。這需要你在Spring中僅注冊了一個此類型的bean
auto Spring會試圖自動監測來找到最好的方法自動裝配你的action
constructor Spring會自動裝配bean的構造函數的參數
是否使用類緩存。你可以通過設置修改struts.properties中下列屬性的值來改變是否使用Spring自身的類緩存機制。可以設定的值為true或false,默認為true。
struts.properties
struts.objectFactory.spring.useClassCache = false
http://dev.rdxx.com/Java/Struts/2008/5/2313512756889_2.shtml