spring-Ioc(二)學習筆記
阿新 • • 發佈:2020-10-07
屬性注入方式
- 設值注入:也就是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屬性來指明引數的位置
- 直接量:String,8種值型別都是用value標籤賦值,用type屬性來指定資料的型別
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)