搜尋
首頁Javajava教程Spring IOC與DI的理解

Spring IOC與DI的理解

Jun 22, 2017 pm 02:55 PM
spring

IOC是一種叫做「控制反轉」的設計思想。

1、較淺的層次-從名字解析 
「控制」就是指對物件的創建、維護、銷毀等生命週期的控制,這個過程一般是由我們的程式去主動控制的,如使用new關鍵字去創建一個物件(創建),在使用過程中保持引用(維護),在失去全部引用後由GC去回收物件(銷毀)。 
「反轉」是指對 物件的創建、維護、銷毀等生命週期的控制由程式控制改為由IOC容器控制,需要某個物件時就直接透過名字去IOC容器中取得。

2、更深的層次-提到DI,依賴注入,是IOC的一種重要實作 
一個物件的創建往往涉及到其他物件的創建,例如一個物件A的成員變量持有另一個物件B的引用,這就是依賴,A依賴B。 IOC機制既然負責了物件的創建,那麼這個依賴關係就必須由IOC容器負責起來。負責的方式就是DI-依賴注入,透過將依賴關係寫入配置文件,然後在創建有依賴關係的對象時,由IOC容器注入依賴的對象,如在創建A時,檢查到有依賴關係,IOC容器就把A依賴的物件B創建後注入A中(組裝,透過反射機制實現),然後把A回傳給物件請求者,完成工作。

3、IOC的意義何在?
IOC並沒有實現更多的功能,但它的存在使我們不需要很多程式碼、不需要考慮對象間複雜的耦合關係就能從IOC容器中獲取合適的對象,而且提供了對對象的可靠的管理,大大降低了開發的複雜性。

以上是Spring IOC與DI的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用MapStruct簡化系統對接中的字段映射問題?如何使用MapStruct簡化系統對接中的字段映射問題?Apr 19, 2025 pm 06:21 PM

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

IntelliJ IDEA是如何通過JavaAgent和RMI技術識別Spring Boot項目的端口號的?IntelliJ IDEA是如何通過JavaAgent和RMI技術識別Spring Boot項目的端口號的?Apr 19, 2025 pm 06:18 PM

IntelliJIDEA如何識別SpringBoot項目的端口號?在使用IntelliJIDEAUltimate版本啟動Spring...

高效編程:如何才能找到可靠的代碼工具和資源?高效編程:如何才能找到可靠的代碼工具和資源?Apr 19, 2025 pm 06:15 PM

高效編程:尋找可靠的代碼工具和資源很多程序員都渴望找到便捷的代碼工具網站,以提高效率,避免在海量信...

JWT能否實現動態權限變更?與Session機制有何區別?JWT能否實現動態權限變更?與Session機制有何區別?Apr 19, 2025 pm 06:12 PM

關於JWT和Session的困惑與解答許多初學者在學習JWT和Session時,常常會對其本質和適用場景感到困惑。本文將圍繞J...

Windows Server 2019防火牆如何正確配置才能支持WebSocket通信?Windows Server 2019防火牆如何正確配置才能支持WebSocket通信?Apr 19, 2025 pm 06:09 PM

WindowsServer2019防火牆與WebSocket通信問題詳解在使用SpringBoot開發的Jar程序部署於WindowsServer2019...

Spring Boot子線程如何訪問主線程的請求信息?Spring Boot子線程如何訪問主線程的請求信息?Apr 19, 2025 pm 06:03 PM

SpringBoot子線程無法訪問主線程Request信息解決方案在Spring...

Java單線程下的指令重排序會影響System.out.println的輸出順序嗎?Java單線程下的指令重排序會影響System.out.println的輸出順序嗎?Apr 19, 2025 pm 06:00 PM

Java單線程下的指令重排序與輸出順序在Java編程中,指令重排序是一個常見的優化技術,用於提高程序的執行效�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境