Struts Spring統合の例
Apache Struts 1.xで開発されたWebアプリケーションのSpring Iocコンテナで宣言されたBeanにアクセスする方法を示すチュートリアルです。
このStruts 1.x Springのサンプルをダウンロードする –
Struts-Spring-Hibernate-Example.zip
Springには、Spring Iocコンテナで宣言されたアクセスBeanに対する「Struts固有の」ソリューションが付属しています。
-
Springのready-make StrutsプラグインをStrutsに登録する
構成ファイル。
-
あなたのStrutsアクションクラスを変更してSpringの
ActionSupport
クラス、Struts Actionクラスのサブクラスです。
-
ActionSupport
は便利な
getWebApplicationContext()を提供します
Spring Iocコンテナで宣言されたBeanにアクセスするためのメソッド。
1. Strutsスプリング依存関係
Struts 1.xと統合するには、Springに ”
spring-web.jar
“と ”
spring-struts.jar
“ライブラリが必要です。 SpringのWebサイトまたはMavenからダウンロードできます。
pom.xml
<!-- Spring framework --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-struts</artifactId> <version>2.0.8</version> </dependency>
2. Strutsプラグインを登録する
Struts設定ファイル(struts-config.xml)で、Springのready-make Strutsプラグイン「
ContextLoaderPlugIn
」を登録します。
<struts-config> <!-- Spring Struts plugin --> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/classes/SpringBeans.xml"/> </plug-in> </struts-config>
”
ContextLoaderPlugIn
“は、StrutsとSpring間のすべての統合作業を処理します。 Springのbean xmlファイルを ”
contextConfigLocation
“プロパティにロードすることができます。
-
SpringBeans.xml **
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- Beans Declaration --> <import resource="com/mkyong/customer/spring/CustomerBean.xml"/> </beans>
3. SpringのActionSupport
Struts Actionクラスでは、Spring ”
ActionSupport
“クラスを拡張し、 ”
getWebApplicationContext()
“メソッドを介してSpringのBeanを取得します。
-
CustomerBean.xml **
<bean id="customerBo" class="com.mkyong.customer.bo.impl.CustomerBoImpl" > <property name="customerDao" ref="customerDao"/> </bean>
-
Strutsアクション**
package com.mkyong.customer.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.web.struts.ActionSupport; import com.mkyong.customer.bo.CustomerBo; import com.mkyong.customer.model.Customer; public class ListCustomerAction extends ActionSupport{ public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception { CustomerBo customerBo = (CustomerBo) getWebApplicationContext().getBean("customerBo"); ... return mapping.findForward("success"); } }
完了しました。