需要解决的问题:
struts2中的像action result inteceptor 这些类都是由struts2怎么产生的? 给你做,你会让他们怎么产生.带这这个问题,我们来看一下struts2中的对象工厂和静态注入
struts2使用了对象工厂objectFactory这个概念,下面我们来看一下objectFactory这个类的结构
下面是objectFactory的类图
通过上面的各个方法,像
buildAction是用来创建action的
buildInterceptor是用来创建interceptor
buildResult是用来创建结果集…….
我们知道了actionresult inteceptor 这些类的创建方式,那么这个静态注入又是什么呢
我们把静态和注入分开来理解
何为静态:
凡是在struts的xml文件中配置的bean,例如:
<beantype="com.opensymphony.xwork2.ObjectFactory" name="struts"class="org.apache.struts2.impl.StrutsObjectFactory" />
在服务器启动的时候就会加载,而且只加载一次,所以为静态
何为注入:StrutsObjectFactory就给纳入到struts2容器中了,这样的现象为注入
应用:值栈的实现类也是通过静态注入改变的
<beantype="com.opensymphony.xwork2.util.ValueStackFactory"name="struts"class="com.opensymphony.xwork2.ognl.OgnlValueStackFactory" />
举例说明:
Public class strutsObjectFactory extend objectFactory { //StrutsObjectFactory是借用ObjectFactory的buildAction方法创建action
}
当struts2容器运行后,会加载struts-default.xml文件,而文件中配置有
<beantype="com.opensymphony.xwork2.ObjectFactory" name="struts"class="org.apache.struts2.impl.StrutsObjectFactory" />
说明:struts2容器会去读该配置文件中的这个配置,然后决定action是由哪个类来创建的
之后通过bean的内容找到相应的类来创建,这就是struts2的对象工厂和静态注入,在这里只是简单的讲解一下,没有深入去剖析.