1. 程式人生 > >Spring 學習筆記(三)IOC之XML方式配置 第二回Bean節點屬性的配置

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>