Spring 之通过 XML 装配 bean

…衆ロ難τιáo~ 提交于 2019-12-18 03:33:01

1、关于 使用传统标签还是 c- p- 命名空间定义的标签,

我的观点是能用  c- p- 命名空间定义的标签 就不用 传统标签(这样会比较简洁。。。

 

2、强依赖使用构造器注入,可选性依赖使用属性注入。

 

【 bean 的初始化】

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">【声明简单的 bean 】
    <!-- 创建一个简单的 bean(默认构造器),自动化命名 ID 默认为 soundsystem.SgtPeppers#0 -->
    <bean class="soundsystem.SgtPeppers" />

    <!-- 自定义 ID 非必要不使用 -->
    <bean id="compactDisc" class="soundsystem.SgtPeppers" />
【借助构造器注入初始化 bean 】
    <!-- 构造器注入 bean 引用 方案一:<constructor-arg>元素 -->
    <bean id="cdPlayer" class="soundsystem.CDPlayer">
        <constructor-arg ref="compactDisc" />
    </bean>

    <!-- 构造器注入 bean 引用 方案二:Spring 3.0 引入的 c-命名空间 需要额外加 XML 顶部声明 -->
    <bean id="cdPlayer#0" class="soundsystem.CDPlayer" c:cd-ref="compactDisc" />
    <bean id="cdPlayer#1" class="soundsystem.CDPlayer" c:_0-ref="compactDisc" />

    <!-- 构造器注入字面值 方案一 <constructor-arg>元素 -->
    <bean id="compactDisc#0"
          class="soundsystem.BlankDisc">
        <constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
        <constructor-arg value="The Beatles" />
    </bean>

    <!-- 构造器注入字面值 方案二 c-命名空间 -->
    <bean id="compactDisc#1"
          class="soundsystem.BlankDisc"
          c:_0="Sgt. Pepper's Lonely Hearts Club Band"
          c:_1="The Beatles" />

    <!-- 装配集合 List Set 数组都可以使用 <list>和<set>标签  -->
    <bean id="compactDisc#2"
          class="soundsystem.BlankDisc">
        <constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
        <constructor-arg value="The Beatles" />
        <constructor-arg><null/></constructor-arg>
    </bean>

    <bean id="compactDisc#3"
          class="soundsystem.BlankDisc">
        <constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
        <constructor-arg value="The Beatles" />
        <constructor-arg>
            <list>
                <value>Sgt. Pepper's Lonely Hearts Club Band</value>
                <value>With a Little help from My Friends</value>
                <value>Lucy in the Sky with Diamonds</value>
            </list>
        </constructor-arg>
    </bean>

    <bean id="NameOfASong" class="java.lang.String" />
    <bean id="compactDisc#4"
          class="soundsystem.BlankDisc">
        <constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />
        <constructor-arg value="The Beatles" />
        <constructor-arg>
            <list>
                <ref bean="NameOfASong" />
            </list>
        </constructor-arg>
    </bean>

</beans>

 

【设置 bean 属性】

类似于初始化 bean 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <!-- 属性注入 -->
    <!-- 强依赖使用构造器注入,可选性依赖使用属性注入 -->
    <bean id="compactDisc" class="soundsystem.SgtPeppers" />
    <bean id="cdPlayer#0"
          class="soundsystem.CDPlayer">
        <property name="compactDisc" ref="compactDisc" />
        <!-- 需要强调,上面的属性必须要有 Setter方法 -->
    </bean>

    <!-- 等价的 p 命名空间 -->
    <bean id="cdPlayer#1"
          class="soundsystem.CDPlayer"
          p:compactDisc-ref="compactDisc" />

    <!-- 注入字面量到属性 -->
    <bean id="reallyBlankDisc"
          class="soundsystem.BlankDisc">
        <property name="title" value="Sgt. Pepper's Lonely Hearts Club Band" />
        <property name="artist" value="The Beatles" />
        <property name="tracks">
            <list>
                <value>...</value>
                <value>....</value>
            </list>
        </property>
    </bean>

    <!-- 等价的 p 命名空间, 无 法 用 它 来 装配 集合 -->
    <bean id="reallyBlankDisc#0"
          class="soundsystem.BlankDisc"
          p:title="Sgt. Pepper's Lonely Hearts Club Band"
          p:artist="The Beatles">
        <property name="tracks">
            <value>...</value>
            <value>....</value>
        </property>
    </bean>

    <!-- 可取的方案 util-命令空间中的 <util:list>标签 -->
    <util:list id="trackList">
        <value>...</value>
        <value>....</value>
    </util:list>

    <bean id="reallyBlankDisc#2"
          class="soundsystem.BlankDisc"
          p:title="..."
          p:artist="..."
          p:tracks-ref="trackList" />

</beans>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!