美文网首页spring零基础学习
spring学习3(基本XML配置)

spring学习3(基本XML配置)

作者: 又是那一片天 | 来源:发表于2017-07-10 16:11 被阅读0次

    配置Bean

    基本配置

    <bean id="hello" class="chen.HelloWorld"></bean>
    
    • class:bean的全类名,通过反射方式在ioc容器中创建bean的实例
    • id:标识容器中的bean id唯一

    配置属性值的两种方式:

    1 通过property标签为bean实例赋值(set方法)
    <bean id="hello" class="chen.HelloWorld">
            <property name="name" value="Spring"></property>
    </bean>
    

    这种赋值方式是spring容器通过实例的set方法为属性赋值

    2 通过constructor-arg标签为bean实例赋值(构造器配置属性)
    <bean id="zhansan" class="chen.Person">
            <constructor-arg value="张三" ></constructor-arg>
            <constructor-arg value="24" ></constructor-arg>
    </bean>
    
    • constructor-arg是构造器的参数顺序 通过指定 type 属性来区分重载构造器
    <bean id="lishia" class="chen.Person">
            <constructor-arg value="1"  type="int"></constructor-arg>
            <constructor-arg value="2"  type="int"></constructor-arg>
    </bean>
    
    • 也可以使用constructor-arg节点下的value子节点来表示 这样和上面是等价的写法
    <bean id="lishib" class="chen.Person">
            <constructor-arg value="1"  type="int"></constructor-arg>
            <constructor-arg   type="int">
                <value>2</value>
            </constructor-arg>
    </bean>
    
    • 如果字面值包涵特殊字符可以使用 <![CDATA[值]]> 包裹

    bean引用两种方式:

    1 使用ref 指向引用bean
        <bean id="car" class="chen.Car">
            <property name="brand" value="宝马"></property>
            <property name="price" value="100000000"></property>
        </bean>
        <!-- 使用ref 指向引用bean  在Person类有Car类型的属性值-->
        <bean id="wu" class="chen.Person">
            <constructor-arg value="王五" ></constructor-arg>
            <constructor-arg value="24"  ></constructor-arg>
            <property name="car" ref="car"></property>
        </bean>
    
    2 使用内部bean 注意 :内部bean无法在外部引用
    <bean id="zs" class="chen.Person">
        <constructor-arg value="猪三" ></constructor-arg>
            <constructor-arg value="25" ></constructor-arg>
            <property name="car" >
                <bean class="chen.Car">
                    <property name="brand" value="奔驰"></property>
                    <property name="price" value="100000000"></property>
                </bean>
            </property>
    </bean>
    

    使用<null/>赋值为null 意义不大

    <bean id="px" class="chen.Person">
            <constructor-arg value="潘小" ></constructor-arg>
            <constructor-arg value="25" ></constructor-arg>
            <property name="car"><null/></property>
    </bean>
    

    级联属性 注意:要先创建级联属性 然后在赋值

    <bean id="car" class="chen.Car">
            <property name="brand" value="宝马"></property>
            <property name="price" value="100000000"></property>
    </bean>
    
    <bean id="hx" class="chen.Person">
            <constructor-arg value="何小" ></constructor-arg>
            <constructor-arg value="25" ></constructor-arg>
            <property name="car" ref="car"></property>
            
            <property name="car.brand" value="我换成法拉利"></property>
    </bean>
    

    集合属性赋值

    • 用list标签中的 ref(引用外不bean) bean (内部bean)value(基本类型或String)子标签 来为list类型赋值
      截取代码:
    <!--phones属性是一个集合对象 -->
    <property name="phones">
                <!-- 用list标签中的 ref bean value子标签 来为list类型赋值-->
            <list>
                <!--phones属性是一个集合对象 -->
                <ref  bean="pg"/>
                <ref  bean="xm"/>
            </list>
    </property>
    
    • 用map标签中的 entry子标签的key value(基本类型或String)或value-ref()(bean) 来为map类型赋值
    <property name="phones">
                <!-- 用map标签中的 entry子标签的key value或value-ref 来为map类型赋值-->
            <map>
                <entry key="a" value="444"></entry>
                <entry key="a" value-ref="xm"></entry>
            </map>
    </property>
    
    • 用props标签中的 prop子标签 来为Properties类型赋值
    <property name="XXXX">
                <!-- 用props标签中的 prop子标签 来为Properties类型赋值-->
            <props>
                <prop key="a">值1</prop>
                <prop key="b">值2</prop>
            </props>
    </property>
    

    配置独立集合bean 需要导入util命名空间 util:list util:map..等独立出来

    <util:list id="list">
            <ref  bean="pg"/>
            <ref  bean="xm"/>
    </util:list>
    

    一些数据集合会被多个bean所引用时可以使用

    通过p命名空间为bean的属性赋值,需要导入p命名空间

    <bean id="hw" class="chen.phone" p:brand="华为" p:price="50000"></bean>
    

    这样配置会很简单

    总结:

    property标签 和 constructor-arg标签 除了constructor-arg name属性 其他的配置方式基本一样
    下一篇 spring学习4

    相关文章

      网友评论

        本文标题:spring学习3(基本XML配置)

        本文链接:https://www.haomeiwen.com/subject/lotuhxtx.html