中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring IOC知識點有哪些

發布時間:2021-12-02 17:09:36 來源:億速云 閱讀:138 作者:柒染 欄目:大數據

這篇文章給大家介紹Spring IOC知識點有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

廣義的 IOC

在這之前,我們先記住一句話。好萊塢原則:Don’t call me, we will call you. 即“不用打電話過來,我們會打給你”。

控制反轉(Inversion of Control,簡稱IoC),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫“依賴查找”(Dependency Lookup)。通過控制反轉,對象在被創建的時候,由一個調控系統內所有對象的外界實體,將其所依賴的對象的引用傳遞(注入)給它。

兩種實現:依賴查找(DL)和依賴注入(DI)。

IOC 和 DI 、DL 的關系:

Spring IOC知識點有哪些

DI(Dependency Injection) 是 Spring 使用的方式,容器負責組件的裝配。

DL(Dependency Lookup)已經被拋棄。

IOC容器的原理

IOC容器其實就是一個大工廠,它用來管理我們所有的對象以及依賴關系。

原理就是通過Java的反射技術來實現的!通過反射我們可以獲取類的所有信息(成員變量、類名等等等)!

再通過配置文件(xml)或者注解來描述類與類之間的關系

我們就可以通過這些配置信息和反射技術來構建出對應的對象和依賴關系了!

我們簡單來看看實際Spring IOC容器是怎么實現對象的創建和依賴的:

Spring IOC知識點有哪些

  1. 根據Bean配置信息在容器內部創建Bean定義注冊表

  2. 根據注冊表加載、實例化bean、建立Bean與Bean之間的依賴關系

  3. 將這些準備就緒的Bean放到Map緩存池中,等待應用程序調用

Spring容器(Bean工廠)可簡單分成兩種:

BeanFactory

  • 這是最基礎、面向Spring的

ApplicationContext

  • ApplicationContext是BeanFactory的子類

沒有特殊要求的情況下,應該使用ApplicationContext完成。因為BeanFactory能完成的事情,ApplicationContext都能完成,并且提供了更多接近現在開發的功能。

對IOC的理解

首先,IOC控制反轉

誰控制誰,控制什么,什么是反轉(有反轉就應該有正轉了)

誰控制誰,控制什么:

在之前,沒有IOC時,我們直接在對象內部通過new進行創建對象,是程序主動去創建依賴對象;

而現在,是由IOC專門一個容器來創建這些對象,即由Ioc容器來控制對 象的創建;

誰控制誰?當然是IOC容器控制了對象;控制什么?那就是主要控制了外部資源獲取(不只是對象還包括比如文件等)。

所謂反轉:

有反轉就應該有正轉,傳統應用程序是由我們自己在對象中主動控制去直接獲取依賴對象,也就是正轉;

而所謂的反轉,其實是反轉的控制權,由 Spring 來控制對象的生命周期,那么對象的控制就完全脫離了我們的控制,控制權交給了Spring 。這個反轉是指:我們由對象的控制者變成了 IOC 的被動控制者。

其次,說到IOC就會想到DI 依賴注入(IOC 是通過DI來實現的),那么:

誰依賴誰,為什么需要依賴;誰注入誰,注入了什么

誰依賴誰:A對象 依賴于 IOC 容器。

為什么需要依賴:A對象需要 IOC 容器提供對象需要的數據、B對象 等外部資源,沒有這些資源不能完成業務處理。

誰注入誰:IOC 容器注入 A對象。

注入了什么:IOC 容器將 A對象 需要的數據、B對象等外部資源按需注入給對象。

好處: 降低了開發的成本,提高了代碼復用率、軟件的靈活性。

IOC:不是什么技術,而是一種設計思想。在 Spring 開發中,由 IOC 容器控制對象的創建、初始化、銷毀等。這也就實現了對象控制權的反轉,由我們對對象的控制轉變成了Spring IOC 對對象的控制。

DI:是 IOC 的具體實現。程序把依賴交給容器,容器幫你管理依賴。

關于Spring IOC知識點有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梧州市| 昌邑市| 信宜市| 枣强县| 西盟| 阳东县| 长宁区| 永和县| 洛隆县| 获嘉县| 三都| 舒兰市| 崇左市| 廊坊市| 政和县| 白水县| 青河县| 胶南市| 邛崃市| 密云县| 肥乡县| 大连市| 永年县| 呼图壁县| 富锦市| 闸北区| 永新县| 进贤县| 新和县| 临颍县| 安新县| 东乡族自治县| 榕江县| 莆田市| 昌江| 闽清县| 晴隆县| 阳信县| 陇西县| 巴林右旗| 巩义市|