首先說下什么是依賴
依賴的解釋:依賴是一種關系,一個類依賴另一個類,也就是一個類中有另一個類的引用,class Person中有class Car的引用那就叫 Person對Car有一個依賴。
//Person對Car有一個依賴
class Person{
Car car;
public Person(){
car=new Car();
}
}
再來談談什么是依賴注入
我們一開始學java對於上面的構造方法里面我們如何給car引用對象呢?我們的第一反應是啥,new 對象啊!,這也就是我們的習慣思維,調用者來創建被調用者的實例,而在依賴注入的思想里,我們不是直接new 對象了,而是通過傳遞外部引用,也就是通過外部注入依賴。
//外部注入依賴
class Person{
Car car;
public Person(Car car){
this.car=car;
}
}
這里面調用者不在控制car的實例的實現了所以叫控制反轉(IoC,inversion of control)實際上和依賴注入(DI,DependencyInjection)是一個意思。
那么我們這么做有啥意義呢?new 對象不是挺好的嗎?
我來好好解釋為啥要依賴注入,比如上面的person類,如果我的Person類中的car從本來的奇瑞qq變大奔,我是不是要再改Person類中的構造方法,是不是賊麻煩,這里面person和car緊密的耦合在一起,我們也就寫死了car在Person類中而且new 對象過程也很慢。而通過外部注入依賴的方式我不需要再改Person類中的代碼,我寫我的大奔代碼 傳**入大奔就行了,這也就說明了為啥要依賴注入,因為可以解耦
依賴注入主要作用: 依賴注入能夠讓相互協作的軟件組件保持松散耦合
Spring中依賴注入
-
依賴注入(DI,DependencyInjection),也叫控制反轉(IoC,inversion of control)是Spring框架的核心機制,相當於心臟對於人的重要性,只有真正理解這些核心的功能,才有能力使用spring框架。
-
Spring中的依賴注入就是上面說的外部,實例不在由程序員實例化,而是通過spring容器幫我們new指定實例並且將實例注入到需要該對象的類。 我們不用關心Car的變化,實例之間的依賴關系由IOC容器負責了,等待Spring依賴注入。
- 未完,下次繼續寫!