一、DI是什麼?
在應用間通常會有兩個或者多個類組成,然後他們互相協作共同完成一個特定的業務邏輯,每個對象負責管理與自己相互協作的對象的引用。這將會導致高耦合難以測試的代碼。
簡單的說DI是能夠將組件的依賴關係進行鬆耦合一種編程方式,讓組件之間複雜的依賴關係簡單化,下面演示DI的好處:
package com.example.spring.DI;
import lombok.extern.slf4j.Slf4j;
/**
* 演示在demo01裏初始化demo02的類的行爲
*/
@Slf4j
public class Demo01 {
private Demo02 demo02;
private Quest quest;
/**
* 可以發現Demo02類與Demo01類緊緊耦合在一起,緊密耦合的代碼難以測試,難以複用。緊耦合
* demo01只能夠做demo02的類的行爲
*/
public Demo01(){
demo02=new Demo02();
}
/**
* 將quest類注入到Demo01類裏,可以把很多行爲寫在quest裏,這種方式爲構造器注入,
* 可以定義一個quest接口或者抽象類,然後將所有的共同行爲實現quest類,實現了鬆耦合
* @param quest
*/
public Demo01(Quest quest){
this.quest=quest;
}
public void B(){
log.debug(""+demo02.A());
}
}
最重要的是quest爲定義的所有請求,可以是一個接口,然後將它以構造器的形式注入到類中,可以使用不同的具體實現類 執行不同的行爲。