回答完美的SpringIOC理解

2021-10-08 16:01:20 字數 1349 閱讀 1417

首先什麼是ioc?

控制反**把建立物件的權利交給spring

依賴注入:

何為依賴,依賴什麼?

程式執行需要依賴外部的資源,提供程式內物件的所需要的資料、資源。

何為注入,注入什麼?

配置檔案把資源從外部注入到內部,容器載入了外部的檔案、物件、資料,然後就把這些資源注入給程式內的物件,維護程式內外物件之間的依賴關係。

所以說,控制反轉是通過依賴注入實現的。但是你品,你細品,它們是有差別的,像是[從不同角度描述的同一件事]:

ioc是設計思想,di是具體的實現方式;

ioc是理論,di是實踐;

從而實現物件之間的解耦。

在類中需要使用的物件,通過反射從第三方容器注入得到而不是自己建立,這個第三方容器就是spring.

現在來比較具體的說一下ioc是什麼?

傳統的幹活方式:在物件單一職責的基礎上,乙個物件很少有不依賴其他物件而完成自己的工作,所以這個時候就會出現物件之間的依賴。而體現在我們的開發中,就需要什麼物件,就建立物件,當物件建立太多的時候,就會出現乙個物件更改,就得更改依賴他的物件,耦合性大。(這樣有了自主性,耦合性卻變得很大)

我們會想,能不能我們在用的時候直接那這個物件去用,將建立物件的能力交給第三方。把控制權交給第三方,這個時候如果需要使用這個物件,就從容器注入這個物件。

怎麼使用ioc?

(1)通過xml檔案

(2)annotation

ioc的過程:

執行過程:

載入配置檔案,初始化系統環境environment介面

準備上下文環境,初始化一些配置資源

建立乙個工廠

為工廠新增各種環境

獲取子類自己重寫的beanfactorypostprocessor

執行容器和我們自己的beanfactorypostprocessor

註冊beanpostprocessor

國際化處理

轉播器子類初始化bean

註冊***,觀察者模式

完成bean建立

發布相應的事件,***

物件建立的時候:在spring容器啟動的時候就要建立好所有的物件。

理解di的關鍵是:「誰依賴誰,為什麼需要依賴,誰注入誰,注入了什麼」,那我們來深入分析一下:

●誰依賴於誰:當然是應用程式依賴於ioc容器;

●為什麼需要依賴:應用程式需要ioc容器來提供物件需要的外部資源;

●誰注入誰:很明顯是ioc容器注入應用程式某個物件,應用程式依賴的物件;

●注入了什麼:就是注入某個物件所需要的外部資源(包括物件、資源、常量資料)。

深入理解ioc:

注意:一定要生成set()方法,因為springioc就是通過這個set方法注入的。

完美的代價

問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串 才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美 的回文串。交換的定義是 交換兩個相鄰的字元,例如 mamad 第一次交換 ad mamda 第二次交換 md madma ...

完美的序列

題目描述 lyk 認為乙個完美的序列要滿足這樣的條件 對於任意兩個位置上的數都不相同。然而並不是所有的序列都滿足這樣的條件。於是 lyk 想將序列上的每乙個元素都增加一些數字 當然也可以選擇不增加 使得整個序列變成美妙的序列。具體地,lyk 可以花費 1 點代價將第 i 個位置上的數增加 1,現在 ...

完美的素數

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 素數又稱質數。指乙個大於1的自然數,除了1和此整數自身外,不能被其他自然數整除的數。我們定義 如果乙個素數是完美的素數,當且僅當它的...