真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

深入淺析Spring解析XML的原理-創(chuàng)新互聯(lián)

深入淺析Spring解析XML的原理?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作負(fù)責(zé)任的成都網(wǎng)站制作公司!

前言

Spring已經(jīng)是我們Java Web開(kāi)發(fā)必不可少的一個(gè)框架,其大大簡(jiǎn)化了我們的開(kāi)發(fā),提高了開(kāi)發(fā)者的效率。同時(shí),其源碼對(duì)于開(kāi)發(fā)者來(lái)說(shuō)也是寶藏,從中我們可以學(xué)習(xí)到非常優(yōu)秀的設(shè)計(jì)思想以及優(yōu)雅的命名規(guī)范,但因其體系龐大、設(shè)計(jì)復(fù)雜對(duì)于剛開(kāi)始閱讀源碼的人來(lái)說(shuō)是非常困難的。所以在此之前首先你得下定決心,不管有多困難都得堅(jiān)持下去;其次,最好先把設(shè)計(jì)模式掌握熟練;然后在開(kāi)始閱讀源碼時(shí)一定要多畫(huà)UML類圖和時(shí)序圖,多問(wèn)自己為什么要這么設(shè)計(jì)?這樣設(shè)計(jì)的好處是什么?還有沒(méi)有更好的設(shè)計(jì)?當(dāng)然,暈車(chē)是難免的,但還是那句話,一定要持之以恒(PS:源碼版本5.1.3.RELEASE)。

正文

熟悉IOC體系結(jié)構(gòu)

要學(xué)習(xí)Spring源碼,我們首先得要找準(zhǔn)入口,那這個(gè)入口怎么找呢?我們不妨先思考一下,在Spring項(xiàng)目啟動(dòng)時(shí),Spring做了哪些事情。這里我以最原始的xml配置方式來(lái)分析,那么在項(xiàng)目啟動(dòng)時(shí),首先肯定要先定位——找到xml配置文件,定位之后肯定是加載——將我們的配置加載到內(nèi)存,最后才是根據(jù)我們的配置實(shí)例化(本篇文章只講前兩個(gè)過(guò)程)。那么Spring是如何定位和加載xml文件的呢?涉及到哪些類呢?我們先來(lái)看張類圖:

深入淺析Spring解析XML的原理

該圖是IOC的體系圖,整體上你需要有一個(gè)大概的印象,可以看到所有的IOC都是有繼承關(guān)系的,這樣設(shè)計(jì)的好處就是任何一個(gè)子類IOC可以直接使用父類IOC加載的Bean,有點(diǎn)像JVM類加載的雙親委派機(jī)制;而紅色方框圈起來(lái)的是本篇涉及到的重要類,需要著重記憶它們的關(guān)系。

圖中最重要的兩個(gè)類是BeanFactory和ApplicationContext,這是所有IOC的父接口。其中BeanFactory提供了最基本的對(duì)bean的操作:

深入淺析Spring解析XML的原理

而ApplicationContex繼承了BeanFactory,同時(shí)還繼承了MessageSource、ResourceLoader、ApplicationEventPublisher等接口以提供國(guó)際化、資源加載、事件發(fā)布等高級(jí)功能。我們應(yīng)該想到平時(shí)Spring加載xml文件應(yīng)該是ApplicationContext的子類,從圖中我們可以看到一個(gè)叫ClassPathXmlApplicationContext的類,聯(lián)想到我們平時(shí)都會(huì) 將xml放到classPath下,所以我們直接從這個(gè)類開(kāi)始就行,這就是優(yōu)秀命名的好處。

探究配置加載的過(guò)程

在ClassPathXmlApplicationContext中有很多構(gòu)造方法,其中有一個(gè)是傳入一個(gè)字符串的(即配置文件的相對(duì)路徑),但最終是調(diào)用的下面這個(gè)構(gòu)造:

 public ClassPathXmlApplicationContext(
  String[] configLocations, boolean refresh, @Nullable ApplicationContext parent)
  throws BeansException {

 super(parent);

 //創(chuàng)建解析器,解析configLocations
 setConfigLocations(configLocations);
 if (refresh) {
  refresh();
 }
 }

網(wǎng)站題目:深入淺析Spring解析XML的原理-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/djcdpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部