Spring註解模式的相關原始碼解析

2021-09-29 01:12:47 字數 1735 閱讀 3822

基於註解實現的bean註冊,要完成的目標

1.1.能夠掃瞄指定包下的類

1.2 基於掃瞄的類生成定義的bean定義

了解spring是如何描述乙個類的資訊的

開始註解的掃瞄及註冊原始碼的解析

由持有的classpathbeandefinitionscan開始掃瞄

3.1 這裡主要實現由包名到資源的過程

3.1.1 我們只有包名,需要把它轉換成我們需要的資源型別

pathmatchingresourcepatternresolver這個開始執行掃瞄的工作,返回資源型別

這裡使用的是遞迴的方式,從最開始的路勁開始執行查詢類的工作

3.2.2 到達這裡,我們已經有了統一的資源型別,開始執行解析的工作

從這裡看,首先基於資源得到了乙個元資料(包含這類的基本資訊,類的註解資訊),那它是如何得到的呢,這裡使用了乙個快取工廠

開始執行建立把對應的source轉換成類,在從類的資訊裡面讀取到元資料,這裡使用了asm來執行元資料的讀取操作,asm是直接對二進位制進行操作,而使用反射讀取,需要把類載入進jvm中,而有些類暫時不會使用,這樣會帶來jvm的效能損耗

到達了這裡,就獲取到了類的元資料資訊,接下來,判斷這個類的註解資訊是否包括在定義的過濾器中

包含這component。

在這裡可以有擴充套件的地方,我們可以自己寫乙個介面,只要元資料報含component。

二我們可以實現typefilter介面,使用自己的邏輯進行元資料的比較,判斷那些類需要被載入

這裡有個疑惑,這個註解是如何工作的

通過原始碼分析,在進行初次掃瞄後,會進行一次重新整理操作,會對相應的註解進行特殊處理。重新進行包掃瞄

到這就完成了從包到資源,在從資源到元資料,在從元資料進行註解過濾,接下來就要開始

完成元資料的解析,組裝bean定義

在發現是註解的方式時,對如下的一些註解進行一些引數的設定

到達了這裡,我們也就得到了bean定義,開始執行註冊的操作,達到了這裡,我們也就完成了包名到資源,資源到元資料,元資料到bean定義,bean定義在註冊到的這些步驟。

Spring註解模式

什麼是註解 名稱 配置資訊 配置在xml檔案中有個不好的地方,類不好找,不方便,配置資訊不是經常修改。註解可以配置在類上,方法上,方便修改。名稱 value s 單值插入 多值插入 spring如何啟動註解 讓spring管理物件註解 component baen標記的配置 主鍵標記 建立模式設定 ...

spring容器相關的註解

spring的bean容器相關的註解 1 autowired 是我們使用得最多的註解,其實就是 autowire bytype 就是根據型別的自動注入依賴 基於註解的依賴注入 可以被使用再屬性域,方法,建構函式上。2 qualifier 就是 autowire byname,autowired註解判...

spring相關註解

autowired 預設按型別裝配,預設情況下必須要求依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false,如 autowired required false 如果我們想使用名稱裝配可以結合 qualifier註解進行使用,如下 autowired qualifie...