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");
}
}
完了しました。