`
小鑫。
  • 浏览: 133254 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转载】Struts2 学习笔记——struts.xml文件之Bean的配置

 
阅读更多
Struts2的大部分核心组件不是以硬编码的形式写在代码中,而是通过自身的IoC容器来管理的。
Struts2以可配置的形式来管理核心组件,所以开发者可以很容易的扩展框架的核心组件。当开发者需要扩展或者替换Struts2的核心组件时,只需要提供自己的组件实现类,并部署在Struts2的IoC容器中即可。
我们打开struts2-core-2.2.1.1.jar中的struts-default.xml文件,可以看到大量的Bean的定义。如下代码片段:
    <!—- 两个对象工厂组件-->
    <bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork" />
    <bean type="com.opensymphony.xwork2.ObjectFactory"
            name="struts"  
           class="org.apache.struts2.impl.StrutsObjectFactory" />

而我们在struts.xml定义Bean时,通常有以下两个作用:
1、 创建的Bean实例作为Struts2框架的核心组件使用。
2、  Bean的静态方法需要一个值注入。
对于第一种用法,Bean的实例作为核心组件使用。因此需要告诉Struts2容器实例的作用----即实现了Struts2的某个接口,这个接口定义了该组件必须遵循的规范。
例如下面我们使用一个自定义的ObjectFactory对象来替换Struts2的内置ObjectFactory
<!—-配置自定义的ObjectFactory Bean,名称为myFactory,实现com.opensymphony.xwork2.ObjectFactory 类,
实现类com.smp.ObjectFactory -->
<bean name="myFactory"
type="com.opensymphony.xwork2.ObjectFactory" class="com.smp.ObjectFactory" />

在使用<bean/>元素在struts.xml文件中定义Bean,bean元素有以下几个属性
class:这个属性是个必填属性,它指定了Bean实例的实现类。
type:这个属性是个可选属性,它指定了Bean实例实现的Struts2的规范,该规范通常是通过某个接口或者在此前定义过的Bean,因此该属性值通常是个接口或者此前定义过的Bean的name属性值。如果需要将Bean的实例作为Strut2组件使用,则应该指定该属性的值。
name:该属性是个可选属性,它指定的Bean实例的名字,对于有相同type的多个Bean。则它们的name属性不能相同。
scope:该属性是个可选属性,它指定Bean实例的作用域,该属性的值只能是default、singleton、request、session或thread之一。
static:该属性是个可选属性,它指定Bean是否使用静态方法注入。通常而言,当指定了type属性时,该属性就不应该指定为true。
optional:该属性是个可选属性,它指定Bean是否是一个可选Bean。

注:转自http://blog.163.com/artsn@126/blog/static/36533281201111511381316/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics