Struts2与Spring整合的原理
来源:互联网 发布:js移动端手指滑动切换 编辑:程序博客网 时间:2024/04/30 07:38
ObjectFactory,是xwork中很重要的一个类,是产生action的地方。单独使用xwork的时候,action都是这个类创建的。
struts2包装了ObjectFactory,自成了一个StrutsObjectFactory,他是继承自ObjectFactory的一个类,因此struts2默认产生action的类就不使用xwork的ObjectFactory了,而是使用StrutsObjectFactory。
struts2的插件struts2-spring-plugin-2.1.8.1.jar,又做了一个对象工厂,StrutsSpringObjectFactory,它的父类是xwork的SpringObjectFactory,最原始的父类也是ObjectFactory,我想xwork提供SpringObjectFactory的目的就是让实现这继承这个类,实现spring工厂。
于是struts2和Spring整合时,其中struts2-spring-plugin-2.1.8.1.jar中的struts-plugin.xml里:
在这bean里面定义的是哪个工厂,struts2就用哪个工厂。
但是不管是哪个工厂最终这些都是有xwork控制完成的。
我们可以查看
xwork的DefaultActionInvocation类的createAction(Map<String, Object> contextMap)方法。这个方法就是工厂对象产生action的方法。我们可以看到这个类中的定义的对象工厂是
protected ObjectFactory objectFactory;
然后没有实例化,而是通过xwork的注入机制注入
@Inject
public void setObjectFactory(ObjectFactory fac) {
this.objectFactory = fac;
}
这个地方用的是最原始的ObjectFactory工厂,但是通过我们的配置为什么能变成StrutsSpringObjectFactory或StrutsObjectFactory呢?
多态?因为ObjectFactory是StrutsSpringObjectFactory和StrutsObjectFactory的父类,可以用任意的子类实例化父类。
通过<constant name="struts.objectFactory" value="xia" />这个配置,来确定注入 objectFactory的那个子类。
我们可以在DefaultActionInvocation的createAction方法打印一下objectFactory
struts2包装了ObjectFactory,自成了一个StrutsObjectFactory,他是继承自ObjectFactory的一个类,因此struts2默认产生action的类就不使用xwork的ObjectFactory了,而是使用StrutsObjectFactory。
struts2的插件struts2-spring-plugin-2.1.8.1.jar,又做了一个对象工厂,StrutsSpringObjectFactory,它的父类是xwork的SpringObjectFactory,最原始的父类也是ObjectFactory,我想xwork提供SpringObjectFactory的目的就是让实现这继承这个类,实现spring工厂。
于是struts2和Spring整合时,其中struts2-spring-plugin-2.1.8.1.jar中的struts-plugin.xml里:
<constant name="struts.objectFactory" value="spring" />
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
在这bean里面定义的是哪个工厂,struts2就用哪个工厂。
但是不管是哪个工厂最终这些都是有xwork控制完成的。
我们可以查看
xwork的DefaultActionInvocation类的createAction(Map<String, Object> contextMap)方法。这个方法就是工厂对象产生action的方法。我们可以看到这个类中的定义的对象工厂是
protected ObjectFactory objectFactory;
然后没有实例化,而是通过xwork的注入机制注入
@Inject
public void setObjectFactory(ObjectFactory fac) {
this.objectFactory = fac;
}
这个地方用的是最原始的ObjectFactory工厂,但是通过我们的配置为什么能变成StrutsSpringObjectFactory或StrutsObjectFactory呢?
多态?因为ObjectFactory是StrutsSpringObjectFactory和StrutsObjectFactory的父类,可以用任意的子类实例化父类。
通过<constant name="struts.objectFactory" value="xia" />这个配置,来确定注入 objectFactory的那个子类。
我们可以在DefaultActionInvocation的createAction方法打印一下objectFactory
会发现,使用不同的对象工厂,那么这里会打印相应的工厂。绝对不只是ObjectFactory这个父类
转自http://aixiangct.blog.163.com/blog/static/9152246120101016113237982/
- Struts2与Spring整合的原理
- Spring与Struts2整合的执行原理.
- Spring与Struts2整合原理
- 详细分析spring与struts2的整合原理
- Struts2与Spring的整合
- Struts2与Spring的整合
- struts2 与spring 的整合
- SPRING与STRUTS2的整合
- spring 与struts2 的整合
- Struts2与Spring的整合
- struts2与spring的整合
- spring与struts2的整合
- struts2与spring的整合
- struts2与struts2-spring-plugin的整合
- 为什么要让Struts2与Spring进行整合呢?它们整合的原理又是什么呢?
- Struts2 与 Spring 整合
- Struts2与Spring整合
- Struts2与Spring整合
- OPM Demo Flow
- 黑马程序员 IO流学习笔记三
- HDU 4686 Arc of Dream (2013多校联合9 1001)
- xml学习笔记
- 最新版本Spring、Hibernate、Struts框架整合
- Struts2与Spring整合的原理
- hdu 1561 The more, The Better (树形背包dp)
- 拷贝构造函数
- CxImage类的简单说明
- 《阿勇java建站教程》1.6-javaScript使用
- Aircrack-ng破解WEP、WPA-PSK加密利器
- 排序算法的归纳与比较,还有相关视频哦【for_wind】
- poj 1253 三维数组+广搜+减枝
- Shell编程学习---第六篇:命令执行顺序