Spring中Context的功能有哪些

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Spring中Context的功能有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

十多年的畢節(jié)網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整畢節(jié)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“畢節(jié)網(wǎng)站設(shè)計”,“畢節(jié)網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

1. context 是什么

我們經(jīng)常在編程中見到 context 這個單詞,當(dāng)然每個人有每個人的理解,它被理解為:上下文、容器等等。我想說的是,context 理解為上下文最為合適。為什么呢?我以一個在計算機系統(tǒng)的例子來解釋一下。

在計算機系統(tǒng)中,進(jìn)程執(zhí)行時有進(jìn)程上下文,如果進(jìn)程在執(zhí)行的過程中遇到了中斷,CPU 會從用戶態(tài)切換為內(nèi)核態(tài)(當(dāng)然這個過程用戶進(jìn)程是感知不到的,由硬件來實現(xiàn)的),此時進(jìn)程處于的進(jìn)程上下文會被切換到中斷上下文中,從而可以根據(jù)中斷號去執(zhí)行相應(yīng)的中斷程序。

通過上面這個例子我們可以發(fā)現(xiàn),進(jìn)程在執(zhí)行程序(不管是用戶程序,還是內(nèi)核中的中斷程序)時,都會依賴一個上下文,這個上下文由多種數(shù)據(jù)結(jié)構(gòu)組成,可以提供我們運行時需要的一些數(shù)據(jù)和保存運行時的一些數(shù)據(jù)。那其實 context 就可以理解對一個程序運行時所需要的一些數(shù)據(jù)結(jié)構(gòu)的抽象表達(dá)唄。

抽象是個好東西,可以更方便的表達(dá)一些東西,更好的設(shè)計系統(tǒng),但大家要想進(jìn)步也不能停留在抽象層面,要去探索它的真正含義,真正對應(yīng)的實體。有時間和大家聊一聊抽象應(yīng)該怎么去理解。

2. spring context 是什么

回到 spring 中,spring 的 ioc 容器也是程序呀,那它的執(zhí)行也肯定需要依賴一個上下文。所以大家應(yīng)該理解 spring context 的意思了吧。那 spring context 既然是 spring 的上下文,按照我們上面的說法上下文會對應(yīng)數(shù)據(jù)結(jié)構(gòu),那 spring context 的數(shù)據(jù)結(jié)構(gòu)是什么呢?換句話說,spring context 究竟包括什么?接下來我就把這個抽象的概念給大家對應(yīng)到實打?qū)嵉臄?shù)據(jù)結(jié)構(gòu)上。

3. spring context 包括什么

主要包括:

  • DefaultListableBeanFactory
     這就是大家常說的 ioc 容器,它里面有很多 map、list。spring 幫我們創(chuàng)建的 singleton 類型的 bean 就存放在其中一個 map 中。我們定義的監(jiān)聽器(ApplicationListener)也被放到一個 Set 集合中。

  • BeanDefinitionRegistry
     把一個 BeanDefinition 放到 beanDefinitionMap。

  • AnnotatedBeanDefinitionReader
     針對 AnnotationConfigApplicationContext 而言。一個 BeanDefinition 讀取器。

  • 擴展點集合
     存放 spring 擴展點(主要是 BeanFactoryPostProcessor、BeanPostProcessor)接口的 list 集合。

4. spring context 的生命周期

下面大家可以結(jié)合代碼這段代碼去理解 spring context 的生命周期。

 public static void main(String[] args) {
  // 初始化和啟動
  AnnotationConfigApplicationContext acaContext = new AnnotationConfigApplicationContext(AppConfig.class);
  // 運行
  acaContext.getBean(ServiceA.class);
  // 關(guān)閉/銷毀
  acaContext.close();
 }

4.1 初始化和啟動

我們平時常說的spring 啟動其實就是調(diào)用 AbstractApplicationContext#refresh 完成 spring context 的初始化和啟動過程。spring context 初始化從開始到最后結(jié)束以及啟動,這整個過程都在 refresh 這個方法中。refresh 方法剛開始做的是一些 spring context 的準(zhǔn)備工作,也就是 spring context 的初始化,比如:創(chuàng)建 BeanFactory、注冊 BeanFactoryPostProcessor 等,只有等這些準(zhǔn)備工作做好以后才去開始 spring context 的啟動。

與現(xiàn)實生活聯(lián)系一下,你可以把初始化理解為準(zhǔn)備原料(對應(yīng)到編程中就是創(chuàng)建好一些數(shù)據(jù)結(jié)構(gòu),并為這些數(shù)據(jù)結(jié)構(gòu)填充點數(shù)據(jù)進(jìn)去),等準(zhǔn)備了你才能去真正造玩偶、造東西呀(對應(yīng)到編程中就是執(zhí)行算法)。在編程中數(shù)據(jù)結(jié)構(gòu)與算法是分不開的也是這個道理呀,它們相互依賴并沒有嚴(yán)格的界限劃分。

4.2 運行

spring context 啟動后可以提供它的服務(wù)的這段時間。

4.3 關(guān)閉/銷毀

不需要用 spring context ,關(guān)閉它時,其實對應(yīng)到代碼上就是 acaContext.close();

上述就是小編為大家分享的Spring中Context的功能有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前名稱:Spring中Context的功能有哪些
新聞來源:http://muchs.cn/article4/piehie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)站設(shè)計公司、網(wǎng)站收錄企業(yè)建站、網(wǎng)頁設(shè)計公司品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營