struts2与spring整合

首先确保struts2-spring-plugin-x-x-x.jar在应用程序的构建路径中。

其次,在struts.xml或者struts.properties中设置struts.objectFactory属性为org.apache.struts2.spring.StrutsSpringObjectFactory。

第三、设置自动装配属性(可选)struts.objectFactory.spring.autoWire=type,这里要说明一下,之所以说这一步是可选的是因为struts2有自己的默认值。下面是这一属性几个可选项的说明:name(默认):按名称装配,如果spring的IOC容器中有bean的名字和我们Action中某属性的名字是一样的,则此Action的属性将被用这个bean来进行赋值,这里的bean指的是某个JAVA类的一个具体的实例,而这个实例是被受管于spring的IOC容器的。type:按类型装配,如果spring的IOC容器中恰好有一个实例的类型和我们Action中某个属性的类型是一样的,那么此Action属性将会被用这个bean来赋值,按类型装配需要保证一种类型只能有一个实例在spring的IOC容器中存在。auto:自动装配,spring自动检测出一种最好的方法来装配Action,具体策略不得而知。constructor:构造器装配,spring自动将参数设置到Action的构造方法中。在默认情况下,struts2框架会首先尝试用spring创建它所需要的对象,如果不能成功它再自己创建。

第四,在web.xml中配置监听器

<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener> 

第五,接下来可以在Spring的配置文件中配置定义bean了

<?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="personManager" class="com.acme.PersonManager"/>
    ...
</beans>

接下来在struts2中定义action时,class属性就无需写类名的全限定名称了,写spring中定义的bean的名称就可以,比如以上定义的personManager。而且Spring会依据指定的装配策略装配PersonManager中的相关属性。

你可能感兴趣的:(spring,bean,xml,struts,IOC)