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

十多年的畢節(jié)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整畢節(jié)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“畢節(jié)網(wǎng)站設(shè)計(jì)”,“畢節(jié)網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
1. context 是什么
我們經(jīng)常在編程中見到 context 這個(gè)單詞,當(dāng)然每個(gè)人有每個(gè)人的理解,它被理解為:上下文、容器等等。我想說的是,context 理解為上下文最為合適。為什么呢?我以一個(gè)在計(jì)算機(jī)系統(tǒng)的例子來解釋一下。
在計(jì)算機(jī)系統(tǒng)中,進(jìn)程執(zhí)行時(shí)有進(jìn)程上下文,如果進(jìn)程在執(zhí)行的過程中遇到了中斷,CPU 會(huì)從用戶態(tài)切換為內(nèi)核態(tài)(當(dāng)然這個(gè)過程用戶進(jìn)程是感知不到的,由硬件來實(shí)現(xiàn)的),此時(shí)進(jìn)程處于的進(jìn)程上下文會(huì)被切換到中斷上下文中,從而可以根據(jù)中斷號(hào)去執(zhí)行相應(yīng)的中斷程序。
通過上面這個(gè)例子我們可以發(fā)現(xiàn),進(jìn)程在執(zhí)行程序(不管是用戶程序,還是內(nèi)核中的中斷程序)時(shí),都會(huì)依賴一個(gè)上下文,這個(gè)上下文由多種數(shù)據(jù)結(jié)構(gòu)組成,可以提供我們運(yùn)行時(shí)需要的一些數(shù)據(jù)和保存運(yùn)行時(shí)的一些數(shù)據(jù)。那其實(shí) context 就可以理解對(duì)一個(gè)程序運(yùn)行時(shí)所需要的一些數(shù)據(jù)結(jié)構(gòu)的抽象表達(dá)唄。
抽象是個(gè)好東西,可以更方便的表達(dá)一些東西,更好的設(shè)計(jì)系統(tǒng),但大家要想進(jìn)步也不能停留在抽象層面,要去探索它的真正含義,真正對(duì)應(yīng)的實(shí)體。有時(shí)間和大家聊一聊抽象應(yīng)該怎么去理解。
2. spring context 是什么
回到 spring 中,spring 的 ioc 容器也是程序呀,那它的執(zhí)行也肯定需要依賴一個(gè)上下文。所以大家應(yīng)該理解 spring context 的意思了吧。那 spring context 既然是 spring 的上下文,按照我們上面的說法上下文會(huì)對(duì)應(yīng)數(shù)據(jù)結(jié)構(gòu),那 spring context 的數(shù)據(jù)結(jié)構(gòu)是什么呢?換句話說,spring context 究竟包括什么?接下來我就把這個(gè)抽象的概念給大家對(duì)應(yīng)到實(shí)打?qū)嵉臄?shù)據(jù)結(jié)構(gòu)上。
3. spring context 包括什么
主要包括:
DefaultListableBeanFactory
這就是大家常說的 ioc 容器,它里面有很多 map、list。spring 幫我們創(chuàng)建的 singleton 類型的 bean 就存放在其中一個(gè) map 中。我們定義的監(jiān)聽器(ApplicationListener)也被放到一個(gè) Set 集合中。
BeanDefinitionRegistry
把一個(gè) BeanDefinition 放到 beanDefinitionMap。
AnnotatedBeanDefinitionReader
針對(duì) AnnotationConfigApplicationContext 而言。一個(gè) BeanDefinition 讀取器。
擴(kuò)展點(diǎn)集合
存放 spring 擴(kuò)展點(diǎn)(主要是 BeanFactoryPostProcessor、BeanPostProcessor)接口的 list 集合。
4. spring context 的生命周期
下面大家可以結(jié)合代碼這段代碼去理解 spring context 的生命周期。
public static void main(String[] args) {
// 初始化和啟動(dòng)
AnnotationConfigApplicationContext acaContext = new AnnotationConfigApplicationContext(AppConfig.class);
// 運(yùn)行
acaContext.getBean(ServiceA.class);
// 關(guān)閉/銷毀
acaContext.close();
}4.1 初始化和啟動(dòng)
我們平時(shí)常說的spring 啟動(dòng)其實(shí)就是調(diào)用 AbstractApplicationContext#refresh 完成 spring context 的初始化和啟動(dòng)過程。spring context 初始化從開始到最后結(jié)束以及啟動(dòng),這整個(gè)過程都在 refresh 這個(gè)方法中。refresh 方法剛開始做的是一些 spring context 的準(zhǔn)備工作,也就是 spring context 的初始化,比如:創(chuàng)建 BeanFactory、注冊(cè) BeanFactoryPostProcessor 等,只有等這些準(zhǔn)備工作做好以后才去開始 spring context 的啟動(dòng)。
與現(xiàn)實(shí)生活聯(lián)系一下,你可以把初始化理解為準(zhǔn)備原料(對(duì)應(yīng)到編程中就是創(chuàng)建好一些數(shù)據(jù)結(jié)構(gòu),并為這些數(shù)據(jù)結(jié)構(gòu)填充點(diǎn)數(shù)據(jù)進(jìn)去),等準(zhǔn)備了你才能去真正造玩偶、造東西呀(對(duì)應(yīng)到編程中就是執(zhí)行算法)。在編程中數(shù)據(jù)結(jié)構(gòu)與算法是分不開的也是這個(gè)道理呀,它們相互依賴并沒有嚴(yán)格的界限劃分。
4.2 運(yùn)行
spring context 啟動(dòng)后可以提供它的服務(wù)的這段時(shí)間。
4.3 關(guān)閉/銷毀
不需要用 spring context ,關(guān)閉它時(shí),其實(shí)對(duì)應(yīng)到代碼上就是 acaContext.close();
上述就是小編為大家分享的Spring中Context的功能有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前名稱:Spring中Context的功能有哪些
新聞來源:http://www.chinadenli.net/article4/piehie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站收錄、企業(yè)建站、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)