最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

02-Spring源碼的準(zhǔn)備工作:Spring的簡單使用和原理分析

2023-06-09 10:56 作者:儒猿課堂  | 我要投稿

開篇


上一節(jié),我們已經(jīng)將Spring源碼的環(huán)境準(zhǔn)備好了,為了方便我們?nèi)胧址治鯯pring的源碼,我們先來簡單使用并了解下Spring的基本原理,這一節(jié)的內(nèi)容主要分為以下幾個部分:

1.首先通過一個案例,簡單來使用下Spring最基礎(chǔ)的容器XmlBeanFactory

2.然后再對比下Spring基礎(chǔ)容器XmlBeanFactory和Spring高級容器ApplicationContext

3.最后呢,我們再分析下Spring的工作原理是怎樣的,先初步了解一下這個過程


Spring基礎(chǔ)容器XmlBeanFactory的簡單使用

為了方便大家理解,我們先從一個最簡單的demo開始,作為Spring源碼分析的入口,首先,我們在IDEA中創(chuàng)建一個簡單的Maven工程,引入如下依賴:

因為我們暫時只研究Spring容器模塊的源碼,初步引入spring-context模塊的依賴就足夠了。

大家或多或少都聽說過,Spring其實就是一個容器,容器中裝的就是一個個的bean,bean其實不需要特別的復(fù)雜,畢竟Spring的初衷就是想要讓bean成為一個簡單的java對象,比如,我們可以創(chuàng)建一個Student類作為Spring的bean:

Student這個bean創(chuàng)建好之后,又該如何添加到Spring容器中呢?我們可以在resources目錄下,創(chuàng)建一個xml文件applicationContext.xml,然后在applicationContext.xml中通過bean標(biāo)簽配置Student類:

可以看到,通過bean標(biāo)簽中的class屬性,我們配置了Student類的全限定名,而id屬性的值就是告訴Spring容器這個bean名稱是什么,方便后續(xù)從Spring容器中獲取這個bean。

現(xiàn)在bean已經(jīng)準(zhǔn)備好了,并且已經(jīng)配置到xml文件中了,這個時候我們就需要掃描xml文件,將xml文件中配置好的bean也就是Student類,給加載到Spring容器中:

可以看到,首先我們通過ClassPathResource封裝了applicationContext.xml配置文件,然后將ClassPathResource作為XmlBeanFactory的構(gòu)造方法的參數(shù)創(chuàng)建XmlBeanFactory,XmlBeanFactory可以理解為就是Spring的容器,是用來存放bean的地方。

接著,我們從XmlBeanFactory容器中,獲取名稱為 student的bean,運行一下就可以在控制臺上打印出字符串“ruyuan ”,Spring容器XmlBeanFactory最基礎(chǔ)的使用也就是這樣了。


XmlBeanFactory和ApplicationContext的對比


XmlBeanFactory大家可能會覺得比較陌生,畢竟我們在公司開發(fā)的過程中,一般都是以ApplicationContext作為Spring的容器,大家暫時可以將XmlBeanFactory理解為是一個基礎(chǔ)的Spring容器,它功能比較簡單,而ApplicationContext相比于XmlBeanFactory而言算是一個高級的容器了。

ApplicationContext在XmlBeanFactory的基礎(chǔ)上,添加了非常多的擴(kuò)展功能和特性,所以,為了方便我們分析Spring的核心源碼,我們當(dāng)然要先從更基礎(chǔ)、更簡單的容器XmlBeanFactory開始研究了,當(dāng)我們了解了XmlBeanFactory的一些核心機(jī)制之后,后面過渡到ApplicationContext就比較簡單了。

同時,可能有些同學(xué)也會問,現(xiàn)在我們在公司中已經(jīng)使用類似@Bean、@Controller、@Service、@Repository等注解了,哪里還有人還在使用xml文件配置了,這里需要說明一下的就是,我們本專欄的源碼講解會先從Spring解析xml配置文件開始,畢竟這是Spring最原始的一套東西,很多的核心機(jī)制還是值得借鑒的。

然后,當(dāng)我們把Spring基于xml配置的這一套機(jī)制搞清楚了之后,后面我們會再來單獨分析Spring是如何基于注解掃描解析的,最后大家會發(fā)現(xiàn),其實不管是基于xml配置的形式還是基于注解的形式,這些都只是表層的形式而已,核心邏輯都是通用的。


XmlBeanFactory的工作原理分析


最后,我們可以簡單來分析下前面demo的功能,我們看下這張圖:

首先,通過ClassPathResource將applicationContext.xml配置文件封裝起來,我們可以知道的是,ClassPathResource肯定會從resources目錄下解析配置文件,從配置文件中解析bean標(biāo)簽,并獲取bean標(biāo)簽上的id屬性和class屬性的值。

通過class屬性的值即類全限定名稱,就可以通過反射創(chuàng)建bean,也就是創(chuàng)建了一個Student對象出來,然后再將Student對象放到Spring容器當(dāng)中,Student對象在容器中的名稱為屬性id的值,Spring容器的初始化簡單來說也就是干這些事。


然后,當(dāng)我們調(diào)用getBean方法時就會從Spring容器中加載bean了,Spring會根據(jù)給定bean的名稱到Spring容器中獲取bean,比如,demo中就是通過student這個名稱,從Spring容器中獲取Student對象。

簡單來說,Spring的核心功能就是這么回事,但是,不管是配置文件的解析,還是從Spring容器中獲取bean,這每一個步驟都涉及到非常復(fù)雜的流程。

所以,接下來我們會以這個demo作為分析Spring源碼的入口,帶大家一起看下Spring源碼為何如此強大以及受歡迎的,大家準(zhǔn)備好了嗎,接下來,我們即將要開始一場深度的Spring冒險之旅了。


總結(jié)


好了,今天的知識點,我們就講到這里了,我們來總結(jié)一下吧。


第一,我們簡單帶大家寫了一個demo,體驗了一下Spring基礎(chǔ)容器XmlBeanFactory的使用

第二,然后我們對比了XmlBeanFactory和ApplicationContext,初步了解到XmlBeanFactory是Spring中比較基礎(chǔ)的容器,而ApplicationContext在XmlBeanFactory的基礎(chǔ)之上又?jǐn)U展了非常多的功能,算是一個高級容器了

第三,最后基于demo中的代碼分析了一下XmlBeanFactory的工作原理,包括加載xml文件、解析xml中的bean標(biāo)簽生成相應(yīng)的bean,并將bean注入到Spring容器中,最后通過getBean方法從容器中獲取bean來使用


從下一節(jié)開始,我們會從ClassPathResource開始,一點點的深入到Spring的源碼內(nèi)部,分析里面的各種機(jī)制和流程。

02-Spring源碼的準(zhǔn)備工作:Spring的簡單使用和原理分析的評論 (共 條)

分享到微博請遵守國家法律
都昌县| 河间市| 玉门市| 贵德县| 莲花县| 孙吴县| 射洪县| 武汉市| 拜城县| 梓潼县| 肥西县| 营口市| 海伦市| 蓬安县| 德格县| 洞口县| 夏津县| 辽阳县| 维西| 苍梧县| 诏安县| 乌兰察布市| 尤溪县| 闸北区| 彭州市| 九寨沟县| 应用必备| 北海市| 定结县| 玉树县| 温州市| 申扎县| 郧西县| 万年县| 通州区| 宽甸| 资溪县| 陆川县| 涡阳县| 临武县| 惠东县|