Spring 依賴注入
阿新 • • 發佈:2020-08-21
spring中 的依賴往入
依賴注入:Dependency Injection
IOC的作用:
-
降低程式間的耦合(依賴關係)
依賴關係的管理:
-
以後都交給spring來維護
在當前類需要用到其他類的物件,由spring為我們提供,我們只需要在配置檔案中說明依賴關係的維護:就稱之為依賴注入。
依賴注入:
能注入的資料:有三類
- 基本型別和String
- 其他bean型別(在配置檔案中或者註解配置過的bean)
- 複雜型別/集合型別
注入的方式:有三種
- 第一種: 使用建構函式提供
- 第二種:使用set方法提供
- 第三種:使用註解提供(明天的內容)
使用建構函式提供
建構函式注入:
使用的標籤: constructor-arg
標籤出現的位置: bean標籤的內部
標籤中的屬性
- type:用於指定要注入的資料的資料型別,該資料型別也是建構函式中某個或某些引數的型別
- index:用於指定要注入的資料給建構函式中指定索引位置的引數賦值。索弓的位置是從0開始
- name:用於指定給建構函式中指定名稱的引數賦值 常用的
- value:用於提供基本型別和String型別的資料
- ref:用於指定其他的bean型別資料。它指的就是在spring的Ioc核心容器中出現過的bean物件
構造方法注入優勢:在獲取bean物件時,注入資料是必須的操作,否則無法完成建立物件
構造方法注入弊端:改變了bean物件的例項化方式,使我們在建立物件時,如果用不到這些資料也必須要提供
<bean id="accountService" class=" com.zhiyou.service.impl.AccountServiceImpl"> <constructor-arg name "name" value="zxh"></constructor arg> cconstructor-arg name =”age" value="18" ></ constructor- arg> kconstructor-arg name ”birthday" ref:" now" ></ constructor arg> </bean>
<bean id = "now" class="java.util.Date"></bean>
set方法注入
涉及的標籤:property
出現的位置:bean標籤內部
標籤屬性:
name:用於指定給建構函式中指定名稱的引數賦值 常用的
value:用於提供基本型別和String型別的資料
ref:用於指定其他的bean型別資料。它指的就是在spring的Ioc核心容器中出現過的bean物件
set 方法的優勢:建立物件時沒有明確的限制,可以直接使用預設函式
set 方法的弊端:如果有某個成員必須有值,則獲取物件是有可能set方法沒有執行
<bean id="accountService" class=" com.zhiyou.service.impl.AccountServiceImpl2"> <property name = "name" value = "zxh" ></property> <property name = "age" value= "18" ></property> <property name = "birthday" ref= "now" ></property> </bean>
<bean id = "now" class="java.util.Date"></bean>
複雜型別注入(陣列,集合,props)
用於給 list 結構集合注入的標籤 :list set array
用於給 map 結構集合注入的標籤:map props
結構相同,標籤可以互換
<bean id="accountService" class=" com.zhiyou.service.impl.AccountServiceImpl3">
<property name = "myStrs"> //陣列
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</property>
<property name = "myList"> //List集合
<list>
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</list>
</property>
<property name = "mySet"> //set集合
<set>
<value>AAA</value>
<value>BBB</value>
<value>CCC</value>
</set>
</property>
<property name = "myMap"> //map集合
<map>
<entry key="testA" value="aaa"></entry>
<entry key="testB"><value>BBB</value></entry>
<entry key="testC" value="ccc"></entry>
</map>
</property>
<property name = "myProps"> //prop集合
<props>
<prop key="testA">aaa</prop>
<prop key="testB">bbb</prop>
<prop key="testC">ccc</prop>
</props>
</property>
</bean>