通过 IoC 容器来管理 Struts2 的核心组件,可以使用 Struts2 框架成为高度扩展、更灵活的 Web 应用框架,因为开发者可以通过 IoC 容器来自由组织 Struts2 框架中的组件,还可以根据不同的业务逻辑需要,通过 IoC 容器将自己编写的 JavaBean 注入 Struts2 框架中。对于开发者而言,应用 Struts2 框架的 IoC 容器具有无限的扩展性。在 Struts2 中,相对于配置文件的其他元素而言,使用 <bean> 元素定义及示例化 Bean 组件。
语法:
<struts>
<bean class="url" name="name"/>
<bean type="value" name="name" class="url"/>
……
</struts>
<bean> 元素的属性较多,如表所示。
属性 | 说明 |
---|---|
name | 用于设置Bean示例的名称,其他地方通过此名称引用Bean示例 |
class | 用于设置Bean的类名指定Bean示例是哪一个对象。此属性是必须设置的属性 |
type | 指定Bean的实现接口,说明Bean是哪一个接口的实现类 |
scope | 设置Bean的作用范围 |
static | 是否使用静态方法注入 |
optional | 是否是一个可选Bean |
示例
通常情况下,在 Struts2 的配置文件中不需要自定义 Bean,这是因为在 struts-default.xml 文件中 Struts2 已经定义了这些对象。打开 Struts2 核心 Jar 包中的 struts-default.xml 文件,可以看到 Struts2 配置的 Bean 对象,其部分代码如下:<struts> <bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork"/> <bean type="com.opensymphony.xwork2.ObjectFactory" name="struts" class="org.apache.struts2.impl.StrutsObjectFactory"/> <bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork" class="com.opensymphony.xwork2.DefaultActionProxyFactory"/> <bean type="com.opensymphony.xwork2.ActionProxyFactory" name="struts" class="org.apache.struts2.impl.StrutsActionProxyFactory"/> …… </struts>上述代码是 struts-default.xml 文件中定义的部分 Bean 对象,既然 Struts2 已经定义这些对象,就可通过继承 struts-default.xml 文件,使我们所编写的配置文件具有这些对象,从而减少配置代码量。