官术网_书友最值得收藏!

在沒有Spring框架的時候,如果在A類中使用B類,則必須在A類中new實例化出B類的對象,這就造成了A類和B類的緊耦合,A類完全依賴B類的功能實現,這樣的情況就屬于典型的“侵入式開發”。隨著軟件業務的復雜度提升,當原有的B類不能滿足A類的功能實現時,就需要創建更為高級的BExt類,結果就是把所有實例化B類的代碼替換成new BExt()代碼,這就產生了源代碼的改動,不利于軟件運行的穩定性,并不符合商業軟件的開發與維護流程。IoC技術就可以解決這樣的問題,其辦法就是使用“反射”技術,動態地對一個類中的屬性進行反射賦值,對于這樣的功能,Spring形成了一個模塊,模塊的功能非常強大,并且Spring對這種機制進行了命名,叫作控制反轉(Inversion of Control,IoC)。

IoC要達到的目的就是將調用者與被調用者進行分離,讓類與類之間的關系進行解耦,這是一種設計思想。解耦的原理如圖1-3所示。

..\20-1352 改圖\0103.tif

圖1-3 使用IoC實現解耦

Spring框架中的IoC技術可以實現A類和B類的解耦,在A類中不再出現new B()的情況,實例化new B()類的任務由Spring框架來進行處理,Spring框架再使用反射的機制將B類的對象賦值給A類中的B b變量。原來A類是主動實例化B類的對象,控制方是A類,而現在以被動的方式由Spring框架來進行實現,控制方現在變成了Spring框架,實現了反轉,所以此種技術稱為“控制反轉”。

IoC是一個理念,也是一種設計思想。A類中的B b對象的值是需要被賦值的,實現的方式是依賴注入(Dependency Injection,DI)。依賴注入是IoC思想的實現,側重于實現,A類依賴B類,B類的對象由容器進行創建,容器再對A類中的B b對象進行值的注入。依賴注入在Java中的底層技術原理就是“反射”,使用反射技術對某一個類中的屬性進行動態賦值,以達到A模塊和B模塊之間的解耦。

在Spring中,官方將管理JavaBean的容器定義為IoC容器(IoC container),而在Spring中對IoC的主要實現方式就是依賴注入,依賴注入的稱呼更容易被人所接受。

主站蜘蛛池模板: 万源市| 嘉禾县| 平南县| 剑河县| 丰都县| 武乡县| 行唐县| 德州市| 唐河县| 长顺县| 永川市| 六枝特区| 昭苏县| 高密市| 承德市| 南投县| 鄂温| 沅陵县| 施秉县| 高州市| 桐乡市| 浦县| 板桥市| 五指山市| 孝昌县| 梁河县| 江达县| 衡山县| 棋牌| 昭平县| 潍坊市| 陇南市| 砀山县| 黄山市| 洛隆县| 阿拉善右旗| 阳朔县| 镶黄旗| 偏关县| 舞阳县| 承德市|