spring uml

spring執行流程:
1: 加載spring.xml文件
2: 創建xml文件解析器
3: 獲取命名空間,即在spring.xml文件中的 http://www.springframework.org/schema/context
4: 根據命名空間找到命名空間處理器,在命名空間處理器中包含多個屬性解析器:
{annotation-config=org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser@21cdca84, mbean-server=org.springframework.context.config.MBeanServerBeanDefinitionParser@4daab172, spring-configured=org.springframework.context.config.SpringConfiguredBeanDefinitionParser@167db34, property-placeholder=org.springframework.context.config.PropertyPlaceholderBeanDefinitionParser@496833a4, load-time-weaver=org.springframework.context.config.LoadTimeWeaverBeanDefinitionParser@581679a2, component-scan=org.springframework.context.annotation.ComponentScanBeanDefinitionParser@2b8ba7dc, property-override=org.springframework.context.config.PropertyOverrideBeanDefinitionParser@5db972d9, mbean-export=org.springframework.context.config.MBeanExportBeanDefinitionParser@3a2334a1
}
<context:component-scan /> 每一個 這樣的標簽都會對應一個解析器
context:annotation-config/
context:load-time-weaver/
context:mbean-export/
context:mbean-server/
context:property-override/
context:property-placeholder/
context:spring-configured/

5: 根據處理器 獲得 標簽<context:component-scan /> 解析器 ComponentScanBeanDefinitionParser

6:ComponentScanBeanDefinitionParser解析器開始解析調用Parse 方法

7:根據<context:component-scan /> 中的掃描路徑進行處理,并加載class文件信息

8:利用ASM技術去解讀class文件獲得class中的信息,spring提供了一些ASM類例如:
import org.springframework.asm.AnnotationVisitor; //查看class文件有哪些注解
import org.springframework.asm.Attribute; //查看class文件有哪些屬性
import org.springframework.asm.ClassVisitor; //
import org.springframework.asm.FieldVisitor; //查看class文件有哪些字段
import org.springframework.asm.MethodVisitor; //查看class文件有哪些方法
import org.springframework.asm.Opcodes;
import org.springframework.asm.SpringAsmInfo;

9:解析完class文件生成beandefinition 對象,beandefinition對象是對bean 定義描述,例如,創建bean的策略,初始方法,等等。

10:最后根據beandefinition 生成 bean對象,放入 spring容器中,spring容器是一個ConcurrentHashMap

以上是spring的大體流程,下面是我跟蹤spring源碼所畫的springUML圖:長卷圖
在這里插入圖片描述

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

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

相關文章

「造個輪子」——cicada(輕量級 WEB 框架)

前言 俗話說 「不要重復造輪子」&#xff0c;關于是否有必要不再本次討論范圍。 創建這個項目的主要目的還是提升自己&#xff0c;看看和知名類開源項目的差距以及學習優秀的開源方式。 好了&#xff0c;現在著重來談談 cicada 這個項目的核心功能。 我把他定義為一個快速、輕量…

基于owncloud構建私有云儲存網盤

注意事項&#xff1a;需要ping通外網 需要LAMP架構yum -y install httpd php php-mysql mariadb-server mariadb sqlite php-dom php-mbstring php-gd php-pdo 開啟服務[rootowncloud ~]# setenforce 0setenforce: SELinux is disabled[rootowncloud ~]# systemctl stop firewa…

Spring 源碼分析之AbstractApplicationContext源碼分析

首先我覺得分析ApplicationContext必須從它的實現類開始進行分析&#xff0c;AbstractApplicationContext我覺得是一個不錯的選擇&#xff0c;那我們就從這里開始逐一分析吧&#xff0c;首先我自己手畫了一張圖&#xff0c;作為索引吧&#xff0c;其中藍色的為類&#xff0c;紫…

[USACO15FEB]Superbull (最小生成樹)

題目鏈接 Solution 基本上就是個板子. 因為 \(n\) 很小,只有 \(2000\),所以直接暴力建圖,然后跑最小生成樹就好了. Code #include<bits/stdc.h> #define ll long long using namespace std; const int maxn2008; struct sj{int to,fr; ll w; }a[maxn*maxn]; int fa[maxn]…

Java中九大內置對象

1、Request對象 該對象封裝了用戶提交的信息&#xff0c;通過調用該對象相應的方法可以獲取封裝的信息&#xff0c;即使用該對象可以獲取用戶提交的信息。 當Request對象獲取客戶提交的漢字字符時&#xff0c;會出現亂碼問題&#xff0c;必須進行特殊處理。首先&#xff0c;…

ORACLE導出導入意外終止導致 ORACLE initialization or shutdown in progress 問題解決

由于意外情況導致 ORACLE initialization or shutdown in progress 個人理解為主要是歸檔日志出現問題&#xff0c; 首先cmd 1.sqlplus /nolog 進入sqlplus 2.connect /as sysdba 連接dba 3.shutdown normal 卸載數據庫 4.startup mount;重啟例程 5.alter database open;開…

Spring中資源的加載ResourceLoader

Spring中資源的加載是定義在ResourceLoader接口中的&#xff0c;它跟前面提到的抽象資源的關系如下&#xff1a; ResourceLoader的源碼 public interface ResourceLoader { /** Pseudo URL prefix for loading from the class path: "classpath:" */ String CLAS…

Codeforces Round #540 (Div. 3)(部分題解)

鏈接:http://codeforces.com/contest/1118 來源:Codeforces 文章目錄A. Water BuyingB. Tanya and Candies(前綴和)D1. Coffee and Coursework (Easy version)(貪心)D2. Coffee and Coursework (Hard Version)(二分)A. Water Buying 題意:用最小的花費買到剛好合適的東西.我們可…

集合一些方法陷阱

一&#xff1a;asList 數組轉ArrayList陷阱&#xff1a; asList() 源碼&#xff1a;public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); } private final E[] a; ArrayList(E[] array) { if (arraynull) throw new NullPointerExcept…

java項目中的classpath

在java項目中&#xff0c;你一定碰到過classpath&#xff0c;通常情況下&#xff0c;我們是用它來指定配置/資源文件的路徑。在剛開始學習的時候&#xff0c;自己也糊里糊涂&#xff0c;但是現在&#xff0c;是時候弄清楚它到底是指什么了。 顧名思義&#xff0c;classpath就是…

C++命名空間(namespace)

在c中&#xff0c;名稱&#xff08;name&#xff09;可以是符號常量、變量、函數、結構、枚舉、類和對象等等。工程越大&#xff0c;名稱互相沖突性的可能性越大。另外使用多個廠商的類庫時&#xff0c;也可能導致名稱沖突。為了避免&#xff0c;在大規模程序的設計中&#xff…

P1556 幸福的路

題意&#xff1a;平面內有N頭牛$N\le 10$john從&#xff08;0,0&#xff09;出發&#xff0c;最后回到(0,0) 只有走到牛那里john才可以改變方向&#xff0c;否則沿著直線走 問john經過每一頭牛并且在每一頭牛出恰好改變方向一次的方案&#xff08;牛可以經過多次&#xff0c;但…

Class.getResource和ClassLoader.getResource

一案例驅動 二源碼分析 三類加載器ClassLoader 四總結 五參考 一案例驅動 最近加載文件的時候遇到了一個問題&#xff0c;很有意思&#xff01; 具體看下面案例代碼 public class TestClassLoader {public static void main(String[] args) {System.out.println(TestClassLoad…

spring-6、動態代理(cglib 與 JDK)

JDK動態代理與Cglib動態代理 JDK動態代理: 1.能夠繼承靜態代理的全部優點.并且能夠實現代碼的復用.2.動態代理可以處理一類業務.只要滿足條件 都可以通過代理對象進行處理.3.動態代理的靈活性不強.4.JDK 的動態代理要求代理者必須實現接口, , 否則不能生成代理對象. . 1 packag…

JDK安裝與配置(Windows 7系統)

1.前言 安裝之前需弄清JDK、JRE、JVM這幾個概念&#xff0c;不然稀里糊涂不知道自己在裝什么。 &#xff08;1&#xff09;什么是java環境&#xff1a;我們知道&#xff0c;想聽音樂就要安裝音樂播放器&#xff0c;想看圖片需要安裝圖片瀏覽器&#xff0c;同樣道理&#xff0c;…

UVA839

這道題又是一道遞歸的題目 先貼上代碼 //這種沒有明確說個數的動態分配還是得用new #include<cstdio> #include<iostream> using namespace std; struct mobile {int WL,DL,WR,DR;mobile *left,*right;mobile(mobile *aNULL,mobile*bNULL):left(a),right(b){} }; m…

Thread.getContextClassLoader與Thread.getClassLoader()區別

在閱讀spring boot啟動時候的源碼中&#xff0c;發現獲取classLoader使用的是getContextClassLoader于是乎產生了疑問&#xff0c;這種獲取ClassLoader的方式與我們最常見的通過Class.getClassLoader二者有什么區別&#xff1f;都是在什么場景下使用呢&#xff1f; 首先來看看…

ssl 的jks 生成工具

https://www.myssl.cn/tools/merge-jks-cert.html 通過key 私鑰 &#xff0c;和公鑰pem 生成jks 轉載于:https://www.cnblogs.com/vana/p/9594298.html

NOIP模擬賽10 題解

t3&#xff1a; 題意 給你一棵樹&#xff0c;然后每次兩種操作&#xff1a;1.給一個節點染色 &#xff1b; 2. 查詢一個節點與任意已染色節點 lca 的權值的最大值 分析 考慮一個節點被染色后的影響&#xff1a;令它的所有祖先節點&#xff08;包括自身&#xff09;的所有除去更…

洛谷 P1136 迎接儀式 解題報告

P1136 迎接儀式 題目描述 LHX教主要來X市指導OI學習工作了。為了迎接教主&#xff0c;在一條道路旁&#xff0c;一群Orz教主er穿著文化衫站在道路兩旁迎接教主&#xff0c;每件文化衫上都印著大字。一旁的Orzer依次擺出“歡迎歡迎歡迎歡迎……”的大字&#xff0c;但是領隊突然…