bean的生命週期中首先是在記憶體中開闢儲存空間,然後反射建立物件,建立物件後,依賴注入,設定bean的屬性,初始化bean,最後
放入快取中,返回bean物件,這裡我們分析一下第一步,bean的建立
準備工作:建立乙個student類,新增註解component
@component("student")測試用例:public class student extends user
public student(int height,string weight)
@override
public void study()
@override public string tostring()
}
public static void main(string args)執行結果:
一:下面看一下原始碼中bean的建立流程,我們首先看一下無引數構造器建立bean物件
在docreatebean方法中,createbeaninstance方法建立物件
通過class類拿到無引數構造器,然後反射建立bean物件:
做乙個封裝,然後返回封裝後的物件:
以上就是無引數構造器的例項化過程,下面看一下有引數構造器的例項化過程:
二:有引數構造器的例項化過程
準備工作:注釋掉component註解
通過xml配置,構造器注入引數:
執行結果:
下面從原始碼層面分析一下有引數構造器的例項化過程:
進入autowireconstructor方法:
例項化後的物件封裝到bw中,返回
總結:bean的例項很簡單,步驟如下:
1:尋找class類,從beandefinition上的屬性
2:根據class類獲取構造器,如果是有引數的獲取有參構造,如果是無引數的獲取無引數構造器
3:無引數構造器直接例項化物件,然後封裝返回,有引數構造器需要尋找引數,然後呼叫構造器方法例項化物件,然後封裝返回。
spring原始碼分析 spring原始碼分析
1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...
Spring 原始碼分析
public throws bean ception 到這裡最終的方法就是refresh super只是做一些初始化工作,可以忽略。以下是初始化發放做的事情 debug main adding systemproperties propertysource with lowest search pr...
spring原始碼分析
spring源 解析 一 ioc容器 url spring源 解析 二 ioc容器在web容器中的啟動 url spring源 解析 三 spring jdbc url spring源 解析 四 spring mvc url spring源 解析 五 spring aop獲取proxy url sp...