• Struts2 学习笔记——struts.xml文件之Bean的配置


    Struts2的大部分核心组件不是以硬编码的形式写在代码中,而是通过自身的IoC容器来管理的。

    Struts2以可配置的形式来管理核心组件,所以开发者可以很容易的扩展框架的核心组件。当开发者需要扩展或者替换Struts2的核心组件时,只需要提供自己的组件实现类,并部署在Struts2的IoC容器中即可。

    我们打开struts2-core-2.2.1.1.jar中的struts-default.xml文件,可以看到大量的Bean的定义。如下代码片段:

    <struts>

        <!—- 两个对象工厂组件-->

     <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。

  • 相关阅读:
    微信推送给服务器的XML消息解析-springmvc 解析xml数据流
    request.getInputStream() 的两种解析方式
    微信的token验证
    springmvc 解析xml数据
    Spring 定时器 No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined
    纯CSS实现图片
    Java线程池应用
    JavaScript 插件的书页翻转效果
    c语言中字符串函数的使用
    窗体显示类
  • 原文地址:https://www.cnblogs.com/lulu638/p/4340703.html
Copyright © 2020-2023  润新知