這期內(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)