spring原始碼分析 堆記憶體中建立bean物件

2022-07-05 04:48:11 字數 1725 閱讀 3252

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...