spring源碼梳理(一)ClassPathXmlApplicationContext

我們了解spring源碼在平時的開發(fā)中能夠更快速的去定位問題,并且能夠去學習這些框架中的設計模式

環(huán)境搭建

1.在idea中創(chuàng)建一個maven工程

? ? ? 相信大家都很熟悉,所以本文中略過。

2.創(chuàng)建一個java類


3.創(chuàng)建SpringBean配置文件


4.pom文件


說明:項目目錄如下:其中MyApp類是和App類類似可以不用管。

進入spring源碼--debug調試

首先我們要從main入口開始,進入ClassPathXmlApplicationContext類,如圖:

然后進入到如下如代碼部分:

調用自己的構造函數(shù),傳入configLocation配置文件信息,此處configLocation=SpringBean.xml,一個refresh參數(shù)為true,還一個空的上下文對象,然后進入:

這是refresh參數(shù)用到了,進入if邏輯,調用一個refresh方法,在此之前setConfigLocations主要是加載Spring配置文件的位置。下面是refresh方法代碼如下:

其中,核心方法this.obtainFreshBeanFactory(),進入到這個方法代碼如下:

主要有兩個方法this.refreshBeanFactory()和this.getBeanFactory(),其中refreshBeanFactory()代碼如下:

總的來說ClassPathXmlApplicationContext 這種形式的Spring配置文件的加載主要是下面的過程:

A:加載配置文件名到系統(tǒng)配置

B:銷毀已有的Beans和BeanFactory

C:創(chuàng)建新的BeanFactory

D:加載Beans,分析Bean中的節(jié)點,然后加載到BeanFactory,BeanFactory生效。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容