一、概述
Struts2與Spring是兩個優秀的開源框架,它們在各自領域內都有良好的表現,而將它們結合起來,不僅可以發揮兩者的優點,而且還可以滿足複雜的業務需求。在Struts2與Spring結合的方式中,最為常用的是使用struts2-spring-plugin,它可以很好地將兩個框架進行集成,簡化應用程序的配置和開發。
二、struts2-spring-plugin集成方式
1、使用Maven構建項目
在Maven項目的pom.xml文件中引入Struts2和Spring相關依賴。
<!-- Struts2 相關依賴 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
<!-- Struts2與Spring集成的插件 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.5.22</version>
</dependency>
<!-- Spring 相關依賴 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
2、在web.xml中載入Spring的配置文件
Struts2與Spring集成的方式一般是在web.xml文件中配置,以下是在web.xml中載入Spring的配置文件的示例:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/applicationContext.xml</param-value>
</context-param>
3、在struts.xml中配置架構
在struts.xml文件中需要增加對Spring的支持,可以通過以下示例進行配置:
<!-- action 配置 -->
<bean type="org.springframework.web.struts2.StrutsActionProxyFactory" scope="prototype"/>
<!-- result 配置 -->
<bean id="strutsSpringObjectFactory" type="org.apache.struts2.spring.StrutsSpringObjectFactory">
<property name="beanFactory" ref="applicationContext"/>
</bean>
<bean type="org.apache.struts2.dispatcher.Dispatcher" name="strutsDispatcher" class="org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter">
<injector>
<!-- 使用 strutsSpringObjectFactory 作為對象工廠 -->
<bean type="com.opensymphony.xwork2.inject.Container" name="struts"
class="org.apache.struts2.spring.StrutsSpringObjectFactory" scope="default" /
>
</injector>
</bean>
三、struts2-spring-plugin常用註解
1、@Autowired註解
@Autowired 註解可以自動裝配一個bean。可以在action類中使用此註解,Struts2框架將會在容器中查找匹配的bean,並將這個bean 插入到 action類的相應欄位上。
public class HelloAction extends ActionSupport {
@Autowired
private HelloService helloService;
//getter and setter
}
2、@Scope註解
@Scope註解指定bean的作用域。默認情況下,一個Spring bean是單例,也就是說它的實例在容器中只有一份,如果需要多份實例,可以通過該註解進行設置。
@Service
@Scope("prototype")
public class HelloService {
// 業務方法...
}
3、@Transactional註解
@Transactional 註解可以聲明一個事務方法。在Struts2 Action方法上使用@Transactional註解即可實現事務操作。
@Transactional(rollbackFor = Exception.class)
public String execute() throws Exception {
//DAO操作
return SUCCESS;
}
四、結語
struts2-spring-plugin的使用,能夠更好的將Spring和Struts2整合在一起,更好地實現項目開發和管理。在實際應用過程中,可以根據具體情況進行靈活配置,實現更好的效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/271949.html