struts2集成spring3的原理分析
2015-08-15 14:16
435 查看
Struts2与Spring进行集成的主要是为了使用 Spring的依赖注入和控制反转特性来实例struts2的对象,如Action,Interceptor,Result等。
它们的集成方法非常简单,只需要在项目的类路径中加入struts2的spring插件包,无需额外配置。当然web.xml不能缺少struts和spring的初始化配置。
web.xml中的struts、spring配置具体如下:
<!-- Spring3 Listener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Struts2 Filters -->
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
对于以上配置,我简单简单分析一下,项目启动时,spring通过listener初始化并注入ApplicationContext到application中,而struts则是通过过滤器实现初始化的。
二者集成原理如下:struts2在初始化时,会自动载入struts2的spring插件包中的struts-plugin.xml配置文件,该文件通过以下配置指定struts的ObjectFactory为插件中StrutsSpringObjectFactory类。
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<constant name="struts.objectFactory" value="spring" />
在未集成spring时,struts的action实例化是由ObjectFactory工厂类处理,有了以上的配置后,就相当于将实例工作转交给StrutsSpringObjectFactory工厂类了。
StrutsSpringObjectFactory工厂类继承至SpringObjectFactory类,该类在创建bean时使用spring的WebApplicationContext容器进行。该容器在项目启动时就已经注入application中了。
它们的集成方法非常简单,只需要在项目的类路径中加入struts2的spring插件包,无需额外配置。当然web.xml不能缺少struts和spring的初始化配置。
web.xml中的struts、spring配置具体如下:
<!-- Spring3 Listener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Struts2 Filters -->
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
对于以上配置,我简单简单分析一下,项目启动时,spring通过listener初始化并注入ApplicationContext到application中,而struts则是通过过滤器实现初始化的。
二者集成原理如下:struts2在初始化时,会自动载入struts2的spring插件包中的struts-plugin.xml配置文件,该文件通过以下配置指定struts的ObjectFactory为插件中StrutsSpringObjectFactory类。
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<constant name="struts.objectFactory" value="spring" />
在未集成spring时,struts的action实例化是由ObjectFactory工厂类处理,有了以上的配置后,就相当于将实例工作转交给StrutsSpringObjectFactory工厂类了。
StrutsSpringObjectFactory工厂类继承至SpringObjectFactory类,该类在创建bean时使用spring的WebApplicationContext容器进行。该容器在项目启动时就已经注入application中了。
相关文章推荐
- 不使用split和replace情况下分割复杂字符串
- Java注解
- Struts2相关知识(一)
- javaWeb用到的检验总结
- 黑马程序员----JDK1.5新特性
- Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack.
- hdu 1877 Java 水题系列
- java中的clone
- Spring MVC学习系列(1)之人生若只如初见
- FreeMarker入门教程
- java语句
- Spring入门
- [JAVA第二课] java命名规则
- 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
- java.lang.NullPointerException Exception details are logged in Window > Show View > Error Log 正确解决方法
- Java初级培训笔记------容器 (1)
- Java基础06 组合
- Java设计模式之单例模式
- java文件预览
- pat(A) 1065. A+B and C (64bit) (java大数)