struts2中的Bean配置
struts2框架是一个高度可扩展的框架,框架的大部分核心组件,struts2并不是以硬编码的方式写在代码中的,而是以自己的IoC(控制反转)容器来管理框架的核心组件。
struts2框架以可配置的方式来管理struts2的核心组件,从而允许开发者可以很方便的扩展该框架的核心组件。当开发者需要扩展,或者替换struts2的核心组件时,只需要提供自己的组件实现类,并将该组件实现类部署在struts2的IoC容器中即可。
在struts.xml文件中定义Bean时,通常有如下两个作用。
1. 创建该Bean的实例,将该实例作为struts2框架的核心组件使用。
2. Bean包含的静态方法需要注入一个值。
举例说明:例如下面的struts.xml文件中的Bean配置,我们使用了一个自定义的ObjectFactory来替换struts2内置的ObjectFactory。配置代码片段如下:
<struts> <!-- 配置定制的ObjectFactory Bean,该Bean实现了ObjectFactory接口,实现类是MyObjectFactory--> <bean type="com.opensymphony.xwork2.ObjectFactory" name="myfactory" class="com.opensymphony.xwork2.myapp.MyObjectFactory"/> </struts>
配置文件解释:
<bean />元素在struts.xml文件中定义Bean,bean元素有如下几个属性:
class:必填属性,它指定Bean实例的实现类。
type:可选属性,它指定Bean实例实现的struts2的规范,该规范通常是通过某个接口来体现,因此该属性的值通常是一个struts2接口。如果需要将Bean实例作为struts2组件来使用,则应该指定该属性的值。
name:可选属性,该属性指定Bean实例的名字,对于有相同type类型的多个Bean,他们的name属性不能相同。
scope:可选属性,该属性指定Bean实例的作用域,属性值只能是default、singleton、request、session或者thread之一。
static:可选属性,该属性指定Bean是否使用静态方法注入,通常而言,当指定了type属性时,该属性值不应该指定为true。
optional:可选属性,该属性指定该Bean是否是一个可选的Bean。