spring管理bean源碼解析

1. 從啟動類開始

public static void main(String[] args) {// Run the SpringApplication class with the Application class as the first argumentSpringApplication.run(Application.class, args);}

2. bean 實例化

// SpringAplication row=1294,1295
run()
// SpringAplication row=1035,1036
run()
// SpringAplication row=293,308
refreshContext(context);
//  SpringAplication row=404,408
refresh(context);
//  SpringAplication row=733,734
applicationContext.refresh();
//ConfigurationApplicationContext rw=201
refresh()
// AbstractApplicationContext row=545,583
finishBeanFactoryInitialization(beanFactory);
// AbstractApplicationContext row=890,918
beanFactory.preInstantiateSingletons();
// ConfigurationListableBeanFactory 160
preInstantiateSingletons();
// DefaultListableBeanFactory row=922,955
preInstantiateSingletons();
// AbstractBeanFactory row=207,208
getBean();
// AbstractBeanFactory row=248,374
goGetBean()
//AbstractBeanFactory row=2003
createBean()

3. bean 依賴注入

接上面

//AbstractBeanFactory row=2003
createBean()
//AbstractAutowireCapableBeanFactory row=503,542
createBean()
//AbstractAutowireCapableBeanFactory row=573,582
doCreateBean()
//AbstractAutowireCapableBeanFactory row=1180,1222
createBeanInstance()
//AbstractAutowireCapableBeanFactory row=1369,1372
autowireConstructor()
// ConstructorResolver row=127,181
autowireConstructor()
// ConstructorResolver row=300,311
instantiate()

4. 刪除實例及其依賴實例

// DefaultSingletonBeanRegistry row=550
destroySingleton()
// DefaultSingletonBeanRegistry row=568
destroyBean()
// AbstractFactoryBean row=197
destroy()

優化中…

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45413.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Power Apps使用oData訪問表數據并賦值前端

在使用OData查詢語法通過Xrm.WebApi.retrieveMultipleRecords方法過濾數據時,你可以指定一個OData $filter 參數來限制返回的記錄集。 以下是一個使用Xrm.WebApi.retrieveMultipleRecords方法成功的例子,它使用了OData $filter 參數來查詢實體的記錄&am…

【Parallel SSH】Ubuntu系統配置pssh實現多主機并行執行Master分發的命令

文章目錄 一、配置多機免密登錄二、ubuntu系統安裝pssh三、并行命令腳本編寫 一、配置多機免密登錄 假設有1臺主機作為Master分發命令,3臺主機作為Servers執行命令。假設Master主機內網IP地址為192.168.0.12,Servers外網IP及對應的hostname分別為&#…

最新盤點!2024年最值得了解的24款項目管理軟件

一、企業該如何選擇一款項目管理工具?選擇項目管理工具時需要考慮哪些因素? 在選擇和對比項目管理工具時,可以通過加權方式進行對比和評估。參考以下模板,可以把自己關注的項目管理工具,進行表格對比,選中…

企業智能制造賦能的環境條件為什么重要?需要準備什么樣的環境?

在全球制造業不斷演進的今天,智能制造已經成為推動行業創新和轉型的關鍵力量。它不僅代表了技術的革新,更是企業管理模式和運營思路的全面升級。然而,智能制造的落地實施并非一蹴而就,它需要企業在環境條件上做好充分的準備&#…

jail內部ubuntu apt升級失敗問題解決-Dynamic MMap ran out of room

在FreeBSD jail 里安裝啟動Ubuntu jammy系統,每次裝好執行jexec ubjammy sh進入Ubuntu系統后,執行apt update報錯。 這個問題困惑了好久,突然有一天仔細去看報錯信息,查看了(man 5 apt.conf) ,才搞定問題。簡單來說就是…

Mybatis攔截器介紹及其應用

Mybatis攔截器介紹及其應用 1、介紹 Mybatis攔截器設計的初衷就是為了供用戶在某些時候可以實現自己的邏輯而不必去動Mybatis固有的邏輯。通過Mybatis攔截器我們可以攔截某些方法的調用,我們可以選擇在這些被攔截的方法執行前后加上某些邏輯,也可以在執…

Pycharm與Gitlab交互

環境準備 1、下載配置好本地Git 2、配置Pycharm上的Git 3、gitlab賬號 Gitlab配置 Gitlab配置中文 賬號》設置》偏好設置》簡體中文 創建項目 命令行操作 打開項目會展示以下步驟 在pycharm克隆gitlab的項目 通過菜單欄 1、在PyCharm的頂部菜單欄中,選擇“V…

本地部署,Flash Diffusion: 加速條件擴散模型實現快速圖像生成

目錄 引言 技術背景 Flash Diffusion 的架構與原理 Flash Diffusion 的主要特點 本地部署 運行結果 實驗結果與分析 應用實例 結論 GitHub - gojasper/flash-diffusion: Official implementation of ? Flash Diffusion ?: Accelerating Any Conditional Diffusion M…

Linux系統搭建輕量級個人博客VanBlog并一鍵發布公網遠程訪問

文章目錄 前言1. Linux本地部署2. VanBlog簡單使用3. 安裝內網穿透4. 創建公網地址5. 創建固定公網地址 前言 今天和大家分享如何在Linux Ubuntu系統搭建一款輕量級個人博客VanBlog,并結合cpolar內網穿透軟件生成公網地址,輕松實現隨時隨地遠程訪問本地…

相交鏈表+判斷環型鏈表+求環型鏈表的入口節點

鏈表OJ題 一.相交鏈表二.判斷環型鏈表三.求環型鏈表的入口節點 一.相交鏈表 相交鏈表 相交:兩個鏈表從頭開始遍歷,尾節點一定是同一個節點。 情況一:當兩個鏈表長度相同時: 情況二:當兩個鏈表長度不同時&#xff1…

考研黨暑假回家還是留校,暑假回家就一定完蛋嗎?

考研我建議最好還是留校,因為環境比較好! 并不是說回家復習就一定不好,回家要面臨三大“敵人”: 1、我們本身的惰性,這個無需多言,在自己熟悉的環境,自己一個人,手機電腦網絡零食俱…

python條件

條件語句 if語句 if...else語句 if...elif...else語句 嵌套 is is 是一個身份運算符,用于比較兩個對象的身份,即它們在內存中的地址是否相同。這與比較兩個對象是否相等的 運算符不同。 運算符比較的是兩個對象的值是否相等。 比較對象 比較基本數據…

【Unity】RPG2D龍城紛爭(十一)戰斗系統之回合制驅動

更新日期:2024年7月11日。 項目源碼:第五章發布(正式開始游戲邏輯的章節) 索引 簡介一、開始關卡二、進入指定回合三、玩家結束當前回合四、進入下一回合五、通關條件六、檢測關卡狀態簡介 通過前兩篇的工作,我們的角色已經能夠進行移動、戰斗了,此刻,便進入第三個板塊…

React基礎學習-Day04

React基礎學習-Day04 常見的鉤子函數及基礎使用方式 1.useState useState 是 React 的一個 Hook,用于在函數組件中添加狀態。它返回一個狀態變量和一個更新該狀態的函數。與類組件的 this.state 和 this.setState 相對應,useState 讓函數組件也能擁有…

存儲實驗:Linux掛載iscsi硬盤與華為OceanStor創建LUN全流程

目錄 目的環境規劃實驗實驗流程Centos配置0. 關閉防火墻1. 設置網卡信息2. 配置路由3. iscsiadm連接存儲 iSCSI LUN創建(以華為OceanStor為例)驗證1. 驗證是否成功2. 開啟自動掛載 目的 實現Linux連接iscsi硬盤,同時實現開機自啟掛載 環境規…

掌握本地倉儲:Gradle本地倉庫配置全指南

掌握本地倉儲:Gradle本地倉庫配置全指南 在構建自動化的領域中,Gradle以其靈活性和強大的依賴管理功能脫穎而出。管理項目依賴時,經常需要配置本地倉庫以優化構建速度、控制依賴版本或支持離線構建。本文將深入探討如何在Gradle中配置本地倉…

JAVA----泛型

泛型 認識泛型 定義類、接口、方法時,同時聲明了一個或者多個類型變量(如:) ,稱為泛型類、泛型接口,泛型方法、它們統稱為泛型。 作用:利用泛型,可以限制集合存儲數據的類型. 泛型…

Gitee簡易使用流程(后期優化)

目錄 1.修改用戶名 2.文件管理 新建文件/文件夾流程如下: 上傳文件流程如下: 以主頁界面為起點 1.修改用戶名 點解右上角的頭像--> 點擊“賬號設置” 點擊左邊欄里的“個人資料“ 直接修改用戶名即可 2.文件管理 選擇一個有修改權限倉庫&#…

【從0到1進階Redis】主從復制

筆記內容來自B站博主《遇見狂神說》:Redis視頻鏈接 1、概念 主從復制,是指將一個臺 Redis 服務器的數據,復制到其他的 Redis 服務器。前者稱為主節點(master/leader),后者稱為從節點(slave/foll…

this指向解析

先看題目: 第一題: var name window var person1 { name: person1, show1: function () { console.log(this.name) }, show2: () > console.log(th show3: function () { return function () { …