1.如何管理对象的生命周期
在面向对象的高级编程语言中都是以“对象”为中心.而对象之间的继承,组合引用所形成的对象树结构为我们进行对象级别的逻辑操作提供足够的语法支持.而对象之间复杂关系也为对象生命周期的管理带来了问题:
1.1 在程序的运行期,应如何创建我们所需要的对象?
1.2 当创建一个新的对象时,如何保证与这个对象所关联的依赖关系也同时被正确地创建出来?
结论:为了更好滴管理对象的生命周期,有必要在程序逻辑中引入一个额外的编程元素,这就是容器(Container).
2.XWork框架中容器
XWork容器接口的定义:com.opensymphony.xwork2.inject.Container
2.1 获取对象实例 <T> T getInstance(Class<T> type, String name); <T> T getInstance(Class<T> type);
Set<String> getInstanceNames(Class<?> type);
2.2 处理对象之间的依赖管理
inject一系列方法.
2.3 处理对象作用范围策略
setScopeStrategy
removeScopeStrategy
3.XWork框架容器管理的对象实例
XWork容器所管理的对象包括所有框架配置定义中的"容器配置元素".即default.properties、struts-default.properties等.
3.1 在Bean节点中声明的框架内部对象.
<bean type="com.opensymphony.xwork2.ActionProxyFactory" name="struts" class="org.apache.struts2.impl.StrutsActionProxyFactory"/> 3.2 在Bean节点中声明的自定义对象
3.3 在constant节点和Properties文件中声明的系统运行参数
struts.action.extension=action,,
< constant name = "struts.devMode" value = "true" />
总结:只要在Struts2/Xwork的配置文件中进行声明即可
4.XWork容器实例的数据接口
就是工厂(Map存储数据).
5.ObjectFactory
Xwork中提供了这样一个工具类ObjectFactory,允许程序员在程序的运行期动态滴构建一个新的对象,并且为这个新构建的对象实施依赖注入操作.
ObjectFactory成为了自定义Bean与Struts2的固有组件或者内置对象进行对话的窗口,也是对Struts2现有功能进行有机扩展的必要元素.