需求簡介
您可以使用註釋將類標記為組件,並自動掃描包路徑以識別組件類。
獲取註釋信息並在容器中註冊組件類以供將來訪問。
分析組件之間的依賴關系,初始化組件類,並註入相關的依賴關系。
從容器中獲取組件類的實例並正常調用相應的方法。
項目框架
整個項目大致分為以下幾個包:
註釋包定義了容器所需的壹些註釋,如組件、服務等。
容器包是容器的主要實現,負責處理容器的相關功能,比如依賴註入。
上下文包定義了上下文環境,並負責掃描組件、依賴關系解析和其他過程。
例外包定義了項目所需的例外。
代理包定義了兩種動態代理方式,壹種是Jdk的動態代理實現,另壹種是CGlib。
utils包定義了壹些工具類。
註釋掃描
完成相關註釋的定義後,需要掃描標有註釋(如@Component)的類以進行進壹步處理。
整個掃描過程實際上是掃描霍穎北大青鳥這個班級。
人們認為Java類加載器可以掃描類路徑並將類加載到集合中。這個過程的部分代碼如下,完整的代碼可以在utils包下的ReflectUtil中查看。
容器的實現
容器的功能可以說是依賴註入的核心之壹。容器是所有組件的管理,基本上所有功能都是圍繞容器進行的。