簡單的spring ioc原理

2021-10-22 04:03:32 字數 1554 閱讀 7903

主要是loadbeandefinitions(beanfactory);方法讀取的

1、建立乙個xmlbeandefinitionreader物件

2、呼叫getinputstream獲取到document物件:doloaddocument(inputsource, resource);

3、解析document中的值:registerbeandefinitions(doc, resource); ->documentreader.registerbeandefinitions - > doregisterbeandefinitions(root);-> parsebeandefinitions(root, this.delegate);

1、構造方法注入無法解決迴圈依賴問題

2、set方法注入循壞依賴解決方案:**快取

一級快取:儲存完全物件   singletonobjects,使用concurrenthashmap來保證安全性

二級快取:儲存半物件  earlysingletonobjects

**快取:存的是$proxy,也就是**物件

3、流程

1、建立a物件,填充a物件中的b的時候,b是空的,需要去建立b物件。

2、建立b物件,填充b物件中的a的時候,發現有乙個a的半物件,將半物件傳入到b中,b此時就是成品物件,再將b物件傳入到a中,此時a也就是乙個成品物件了     

4、可不可以只有一級快取

不可以,因為不能區分是成品物件還是半成品物件

5、可不可以只有二級快取

如果沒有aop的**物件,是可以只有二級快取的

6、**快取存在的意義

因為如果有aop的情況下,可能會將**物件替換非**物件,如果沒有**快取的話,就得不到**物件。因為乙個容器中,不可以有同名的兩個物件,乙個**物件,乙個非**物件

2.**設計模式:spring aop功能的實現。

3.單例設計模式:spring中的bean預設都是單例的。

4.模板方法模式:spring中的jdbctemplate、hibernatetemplate等以template結尾的對資料庫操作的類,它們就使用到了模板模式。

5.包裝器設計模式:我們的專案需要連線多個資料庫,而且不同的客戶在每次訪問中根據需要會去訪問不同的資料庫。這種模式讓我們可以根據客戶的需求能夠動態切換不同的資料來源。

6.觀察者模式:spring事件驅動模型就是觀察者模式很經典的乙個應用。

7.介面卡模式:spring aop的增強或通知(advice)使用到了介面卡模式、spring mvc中也是用到了介面卡模式適配controller。

1、controller:標註是乙個controller

2、service:標註是乙個service

3、repository:標註是乙個dao

4、component:標註是乙個類

5、responsebody:返回json

6、resource:注入物件,以名字注入

7、autowired:注入物件, 以型別注入

SpringIoc的注入原理

spring是在配置類需要指定掃瞄包,然後遞迴得到下面所有的檔案 springboot預設啟動類和兄弟目錄下面所有的包檔案 包名 檔名 類全限定名 calss.from載入到記憶體當中,得到位元組碼 class 判斷這個類的腦門上是否有註解 就是類的頭頂上 有註解的話,就把這個類先put到map裡面...

Spring ioc的底層原理

ioc inversion of control,控制反轉 乙個類的某個屬性需要使用時,需要有本類自己初始化。而在spring類的某些屬性不用自己初始化而交給了spring來管理。這樣的轉換就是ioc思想。spring的ioc思想是,spring的ioc容器在初始化的時候就根據配置對相應的物件進行初...

Spring IoC底層原理

siwuxie095 spring ioc 底層原理 1 ioc 即 inversion of control,控制反轉,把物件的建立 交給 spring 進行管理 2 ioc 容器管理 bean 的方式 1 基於 配置檔案的方式 2 基於 註解的方式 3 ioc 底層原理所使用的技術 1 xml ...