Spring 学习笔记(三)IOC之XML方式配置 第二回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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
    scope:单例(singleton)/多例(prototype)/每一个请求创建一个实例(request)/每一个会话创建一个实例(session)
    使用单例还是多例,得看对象的成员变量是否要再多个线程之间共享, 默认为单例(singleton)

    init-method 初始化时调用的方法, 在构造对象之后
    destroy-method 销毁对象时调用的方法,不知道JVM回收时会不会调用
    -->
    <bean id="sadamu" class="org.spring.example.Sadamu" scope="singleton"
    init-method="init" destroy-method="destroy">
        <!--<property name="Kazhafei" ref="kazhafei" />-->
        <!--EL表达式 可以是对象、对象属性#{kazhafei.name}、字符串等#{'abc'}-->
        <property name="Kazhafei" value="#{kazhafei}" />
    </bean>

    <!--创建对象kazhafei-->
    <bean id="kazhafei" class="org.spring.example.Kazhafei">
        <!--通过构造函数参数的方式传递-->
        <constructor-arg index="0" ref="sadamu" />
    </bean>

</beans>

scope

  • 不赋值默认为单例(singleton)
  • prototype:多例, 获取一次就创建一个新对象
  • request:每一个请求创建一个实例
  • session:每一个回话创建一个实例
  • 使用单例还是多例,得看对象的成员变量是否要再多个线程之间共享

init-method与destroy-method

  • 对象初始化与被销毁时执行的方法 
  • init-method会在构造方法之后执行

Setter方式注入

在bean标签下写property标签,name为属性名称,测试了下首字母不区分大小写 -,-

普通方式是用ref赋值,直接写其他已经配置的javabean

spEL表达式使用value属性,对象:#{beanName} ,字符串:#{'字符串'}  

构造方式注入

在需要注入对象的构造函数中添加属性、参数。

   private Sadamu sadamu;


    public Kazhafei(Sadamu sadamu) {
        System.out.println("卡扎菲初始化");
        System.out.println(String.format("萨达姆在卡扎菲处初始化:【%s】", sadamu));
    }

XML中配置,index代表参数所在索引(从0开始).,ref还是表示javaBean的名称

<!--创建对象kazhafei-->
    <bean id="kazhafei" class="org.spring.example.Kazhafei">
        <!--通过构造函数参数的方式传递-->
        <constructor-arg index="0" ref="sadamu" />
    </bean>

其他各类型的注入,就是给对象属性赋值


    <!--创建对象kazhafei-->
    <bean id="kazhafei" class="org.spring.example.Kazhafei">
        <!--通过构造函数参数的方式传递-->
        <constructor-arg index="0" ref="sadamu"/>
        <property name="对象">
            <ref bean=""/>
        </property>
        <property name="数组">
            <array>
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </array>
        </property>

        <property name="Map">
            <map>
                <entry key="k1" value="a"/>
                <entry key="k1" value="a"/>
            </map>
        </property>
        <property name="List">
            <list>
                <value>l1</value>
                <value>l2</value>
            </list>
        </property>
        <property name="Properties">
            <props>
                <prop key="name">张三</prop>
            </props>
        </property>
    </bean>

猜你喜欢

转载自blog.csdn.net/baitianmingdebai/article/details/84994550