1. 程式人生 > 實用技巧 >spring-Ioc(二)學習筆記

spring-Ioc(二)學習筆記

屬性注入方式

  • 設值注入:也就是set注入,通過setter方法注入
    • java Bean
    private ITestDao dao;
    public void setDao(ITestDao dao){
     this.dao = dao
    }
  • xml檔案
    <bean id="..." class="...">
        <property name="dao">
            <ref bean="....">
        </property>
    </bean>
  • 構造注入:
    • 直接量:String,8種值型別都是用value標籤賦值,用type屬性來指定資料的型別
    • 當構造方法過載時,因引數個和引數型別不能區分時,引入 index屬性來指明引數的位置

P名稱空間注入

  • 引入p的schema檔案
    <!-- 直接量(基本資料型別,字串)屬性的賦值方式-->
<bean id="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz"p:age="23"  p:name="jack"></bean>

<!--引用Bean的賦值方式-->
<bean id ="testDao" class="cn.bdqn.spring.loc.dao.NewDao"></bean>
<bean id ="testBiz" class="cn.bdqn.spring.loc.service.impl.TestBiz" p:dao-ref="testDao"></bean>

當bean的屬性中存在集合時,如:list, set ,map注入方式

<bean id="moreComplexObject" class="example.ComplexObject">
    <!--當屬性的返回結果是類是properties檔案時-->
    <property name="adminEmails">
        <props>
            <prop key="administrator">[email protected]</prop>
             <prop key="support">[email protected]</prop>
             <prop key="development" > [email protected]</prop>
        </props>
      </property>
    <!--當屬性的返回結果是list集合時-->
    <property name="someList">
        <list>
            <value>a list element followed by a reference</value>  <!--直接量賦值方式-->
            <ref bean="myDataSource">    <!--java Bean的賦值方式-->
        </list>
    </property>


    <!--當屬性的返回結果為map時-->
    <property name="someMap">
        <map>
            <entry key="an entry" value="just some string"/>
            <entry key="a ref" value-ref="myDataSoruce"/>
         </map>
    </property>
    <!--當屬性的返回結果為set時-->
    <property name="someSet">
        <set>
            <value>just some string<value>
            <ref bean="myDataSource"/>
        </set>
    </property>
</bean>

給元素賦值null 或者“”

<!--把屬性設定為null值-->
<bean class="ExampleBean">
    <property name="email">
        <null/>
    </property>
</bean>
<!--設定為空字串-->
<bean class="ExampleBean">
    <property name="email" value="">
</bean>
  • spring內部Bean的注入,相當於隨用隨new,外部的其它Bean不能使用

自動裝配

  • 按型別匹配
  • 設定全域性自動裝配的型別
  • Spring提供的4種自動裝配型別
取值說明
no 預設值,Spring預設不進行自動裝配,必須顯式指定依賴物件</td
byName 根據屬性我自動裝配,Spring自動查詢與屬性名相同的id,如果找到,則自動注入,否則什麼也不做</td
byType根據的型別自動化裝配,Spring自動查詢與屬性型別相同的Bean,如果剛好找到唯一的那個,則自動注入。如果找到多個與屬性型別相同的Bean,則丟擲異常,如果沒有找到,就什麼也不做
constructor 和byType類似,不過它針對構造方法,如果Spring找到一個Bean和構造方法的引數型別相匹配,則通過構造注入該依賴物件,如果找不到,交丟擲異常


來自為知筆記(Wiz)