spring Bean建立過程詳解

2022-07-16 06:51:16 字數 2045 閱讀 3433

​ 強烈建議大家從git上拉取spring原始碼來學習spring原始碼。因為裡面相較於idea生成的會有注釋,裡面有的方法會有注釋看起來會省力一點。

​ 以下都是用5.0.2版本來做闡述。

寫在前面:建議大家一定要自己用例項跑一遍,做好記錄。如果只是看看會非常抽象。此流程圖作為梗概,便於加強記憶和理解,新手或無基礎的有個印象即可。等跟隨本文走通一遍,在回過頭看這個圖,或許會有收穫

bean的定義

這是我的bean目錄結構,只是做乙個例子

獲取核心容器物件,bean最後都會放在此容器物件中

public class mytest

}建議用idea的debug模式來觀察spring的ioc過程

向下執行,檢視refresh()

利用this.createbeanfactory() 建立了乙個beanfactory,型別為defaultlistablebeanfactory

這個類接著往下走:this.loadbeandefinitions(beanfactory);

* load bean definitions into the given bean factory, typically through

* delegating to one or more bean definition readers.

這個方法會將beandefinitionsreader讀取到的bean definitions放入bean工廠,我們以上提出的三種

注入方式都會走到這裡,將bean資訊丟進去

返回上述 refresh()

beanfactory.preinstantiatesingletons();例項化方法

進入到createbean方法中

繼續進入

這個方法注釋說明了例項化物件是用構造器完成的

以上就是bean物件例項化的基本過程,下面是例項化完成後的初始化過程

回到這裡,例項化完成後

注釋說明了在populatebean完成bean的初始化

繼續

會看到在此方法裡會呼叫前置和後置處理器來初始化bean
以上就完成了bean的例項化過程,文章開頭的那個圖剛開始有點懵,但是一旦跑完一遍bean的例項化過程,再次結合圖,就清晰了很多。本文只是簡單的跟隨debug順序,完整的走了一遍bean例項化的過程,還有特殊情況並沒有討論,後期會重新用新文章再來拓展。

如有不足還請指正。

Spring Bean建立物件的步驟方式詳解

1.通過無參建構函式建立 預設 2.通過有參構造建立 1.constructor 的index賦值 2.constructor 的 type 方式 j a.lang.string value 3.constructor 的name方式 程式設計客棧 name value 123 name 變數名 3...

spring bean載入過程

spring通過資源載入器載入相應的xml檔案,使用讀取器讀取資源載入器中的檔案到讀取器中,在讀取過程中,解析相應的xml檔案元素,轉化為spring定義的資料結beandefinition,把相應的beandefinition註冊到登錄檔中。登錄檔中包含的beandefinition的資料結構,沒...

Spring bean銷毀的過程

一 defaultsingletonbeanregistry之destroysingleton string beanname 銷毀單例beanpublic void destroysingleton string beanname destroybean beanname,disposablebe...