《Spring揭秘》第四章 读书笔记 —— BeanFactory的XML之旅

<bean><beans>标签
在spring中所有被注册的对象都可以称作为bean,所以很容易理解标签含义,beans就是bean的集合

是XML中顶级元素,对其有几项属性设置:

  • default-lazy-init 延迟初始化,可选属性为:true或者false
  • default-autowire 自动绑定,可选属性为:no(默认不是自动绑定),byName, byType, constructor, autodetect
  • default-dependency-check 依赖检查,可选属性:none(默认不检查)、object、simple和all
  • defaul-init-method 初始化方法,如果不同的bean有相同的初始化方法,可以使用
  • default-destroy-method 对应上面的销毁方法,如果所有的bean采用了相同名称的方法来销毁方法,可以通过全局设定

有一些可选的属性值:
<description>标签是用来添加对beans的描述,数量为1或者0个
<import>配置所依赖的其他配置文件,通过标签来引用
<alias>为bean取别名
beans和其下属元素之间关系

<bean>是用来传入实体对象的,最常见的属性是:①id 用来区别各个bean ②class 注册对象通过这个来获取到对象类型

如过对象中含有注册方法,也可以通过XML配置将bean注册进入,这里会使用到<constructor-arg>

<bean id="djNewsProvider" class="...FXNewsProvider">
    <constructor-arg>
        <ref bean="djNewsListener"/>
    </constructor-arg>
    <constructor-arg>
        <ref bean="djNewsPersister"/>
    </constructor-arg>
</bean>

<ref>中存放的信息也是注册过的bean,引用的是其他的实体对象

type属性的使用:如果构造方法中有传入的参数值可以使用

<bean id="mockBO" class="..MockBusinessObject">
    <constructor-arg type="int">
        <value>111111</value>
    </constructor-arg> 
</bean>

index属性的使用:对应的上面的属性,是为了传入参数的顺序,起始位置为0

在XML中配置setter方法,spring并提供了property属性

<bean id="djNewsProvider" class="..FXNewsProvider"> 
    <property name="newsListener" ref="djNewsListener"/> 
    <property name="newPersistener" ref="djNewsPersister"/>
</bean>

<property><constructor-arg>中可用的配置:

(1) <value> 用来注入简单的数据类型,且是最底层的元素,内部不能在嵌套:

<constructor-arg value="1"/>
<property name="attributeName" value="2"/>

(2) <ref>用来指定引用其他的对象,有local、parent、bean属性

constructor-arg>
    <ref local="djNewsPersister"/>
</constructor-arg>
//用于指定相同配置文件中的对象
<constructor-arg>
    <ref parent="djNewsPersister"/>
</constructor-arg>
//引用当前容器的父容器中注入的对象
<constructor-arg>
    <ref bean="djNewsPersister"/>
</constructor-arg>
//都能够使用

(3) <idref> 为当前对象注入对象而不是引用,在容器解析时候就能检测该对象是否存在

<property name="newsListenerBeanName">
    <idref bean="djNewsListener"/>
</property>

(4) 内部<bean> 当希望当前的对象只被其引用类使用的时候,可以使用内部<bean><bean>的所有属性都可以正常使用

<bean id="djNewsProvider" class="..FXNewsProvider">
    <constructor-arg index="0">
        <bean class="..impl.DowJonesNewsListener"></bean>
    </constructor-arg>
    <constructor-arg index="1">
        <ref bean="djNewsPersister"/>
    </constructor-arg>
</bean>

(5) <list> 用来注入类型为java.util.List类型的数组和其子类对象

public class elementObject{
    private List param1;
    private int[] param2;
}
--------对应的XML配置---------
<property name="param1">
    <list>
        <value>something</value>
        <ref bean="someBeanName"/>
        <bean class="..."/>
    </list>
</property>
<property name="param2">
    <list>
        <value>stringValue1</value>
        <value>stringValue2</value>
    </list>
</property>

(6) <set> 对应上面的标签,可以注入的无序的java.util.Set类型依赖

<property name="valueSet">
    <set>
        <value> something</value>
        <ref bean="someBeanName"/>
        <bean class="..."/>
        <list>
            ...
        </list>
    </set>
</property>

(7) <map> 对应注入java.util.Map对象

<property name="mapping"> 
    <map> 
        <entry key="strValueKey">
            <value>something</value>
        </entry> 
        <entry>
            <key>objectKey</key>
            <ref bean="someObject"/> 
        </entry> 
        <entry key-ref="lstKey">
            <list>
             ...
            </list>
        </entry>
        ...
    </map>
</property>

其内部属性<entry><value>注入的是key-value对
(8) <props> 可以看做是简化之后的<map>,使用方法:

<property name="valueSet">
    <props>
        <prop key="author">fujohnwang@gmail.com</prop>
        <prop key="support">support@spring21.cn</prop>
        ...
    </props>
</property>

(9)<null/> 注入的对象为null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值