依賴注入java
Dependency InjectionIoc的做用:下降程序間的耦合(依賴關係)函數
依賴關係的管理:this
之後都交給Spring來維護在當前類中須要用到其餘類的對象,由Spring爲咱們提供,咱們只須要在配置文件中說明依賴關係的維護就是依賴注入spa
依賴注入能注入的數據:有三類 code
基本數據類型和String 對象
其餘bean類型(在配置文件中或者註解配置過的bean) blog
複雜類型/集合類型 索引
注入的方式:io
第一種:使用構造函數提供 class
第二種:使用set方法提供
第三種:使用註解提供
構造函數注入
使用的標籤:constructor-arg
標籤中的屬性:
type:注入數據的數據類型,該數據類型也是構造函數中某個或某些參數的類型
index:用於指定要注入的數據給構造函數中指定索引位置參數賦值。索引位置從0開始。
name:用於給構造函數指定名稱的參數賦值
value:用於提供基本類型和String類型的數據
ref:用於指定其餘的bean類型數據。它指的就是在Spring容器中出現過的bean對象
優點:在獲取Bean對象時,注入的數據是必須的操做,不然沒法建立Bean。
弊端:改變bean對象的實例化的方式,使咱們在建立對象的時候,若是用不到這些數據,也必須提供。
<bean id="accountService" class="com.xuefei.service.impl.AccountServiceImpl"> <constructor-arg name="name" value="小李"></constructor-arg> <constructor-arg name="age" value="20"></constructor-arg> <constructor-arg name="date" ref="now"></constructor-arg> </bean> <bean id="now" class="java.util.Date"></bean>
package com.xuefei.service.impl; import com.xuefei.service.AccountService; import java.util.Date; /** * 帳戶業務層實現類 */ public class AccountServiceImpl implements AccountService { String name; Integer age; Date date; public AccountServiceImpl(String name, Integer age,Date date) { this.name = name; this.age = age; this.date = date; System.out.println("我是"+name+"今年"+age+"歲了!"+date); } public void saveAccount() { } }