您的位置:

Struts2-Spring-Plugin详解

一、概述

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整合在一起,更好地实现项目开发和管理。在实际应用过程中,可以根据具体情况进行灵活配置,实现更好的效果。