spring容器和上下文的理解
spring框架現(xiàn)在使用的很多已维,這說明有其獨特之處----依賴注入斧蜕,很簡單的四個字号显,在我們需要對象的時候跨细,spring就可以給我們提供所需要的對象鹦倚,對象的創(chuàng)建、銷毀冀惭、管理這些都不需要我們?nèi)タ紤]震叙,只需要考慮的業(yè)務(wù)的實現(xiàn)就行---開發(fā)的時候挺省事,也提高了開發(fā)效率散休,所以才有這么多人在用它開發(fā)各種web程序媒楼。
如果僅僅是簡單的用spring,俗稱拿來主義戚丸,倒也不用去了解spring的原理划址,如果你想知道spring的為什么在我們需要的時候給我們提供對象?對象是從哪里來的限府?它是怎么管理對象的夺颤?等這些的話,就需要花點時間去研究一下spring的源代碼了胁勺,順便可以學習下大神的代碼世澜,這里先簡單的陳述下spring的主要思想,后續(xù)有時間分享下源代碼閱讀署穗。
spring的核心那就是容器寥裂,類似工廠的地方,應(yīng)用程序中那么多對象的產(chǎn)生銷毀蛇捌,肯定需要一個地方來專門處理--容器抚恒,有一個很大家很熟悉的容器,tomcat络拌,它是servlet的web容器俭驮,容器負責了對象整個的生命周期--------創(chuàng)建、裝配春贸、銷毀混萝,有一個專業(yè)的術(shù)語來形容spring容器----IOC容器,IOC是指我們在開發(fā)的過程中不用管對象的創(chuàng)建這些萍恕,都交給容器去處理逸嘀,等于說把控制權(quán)交給了容器(控制反轉(zhuǎn)),這里要說明一下允粤,IOC不是spring專有的崭倘,還有很多通過IOC容器的框架翼岁。
光有spring容器也沒什么用,容器說到底只是一個管理對象的空間司光,就像一個沒有圖紙的工廠琅坡,不知道怎么生產(chǎn)產(chǎn)品,這就涉及到了spring應(yīng)用上下文残家,說的簡單點就是容器的對象榆俺,是對spring容器抽象的實現(xiàn),我們常見的ApplicationContext本質(zhì)上來說是一種維護Bean的定義和對象之間協(xié)作關(guān)系的高級接口坞淮,spring的核心是容器茴晋,有且不止一個容器:
① AnnotationConfigApplicationContext:從一個或多個基于java的配置類中加載上下文定義,適用于java注解的方式回窘;
② ClassPathXmlApplicationContext:從類路徑下的一個或多個xml配置文件中加載上下文定義诺擅,適用于xml配置的方式;
③ FileSystemXmlApplicationContext:從文件系統(tǒng)下的一個或多個xml配置文件中加載上下文定義毫玖,也就是說系統(tǒng)盤符中加載xml配置文件掀虎;
④ AnnotationConfigWebApplicationContext:專門為web應(yīng)用準備的,適用于注解方式付枫;
⑤ XmlWebApplicationContext:從web應(yīng)用下的一個或多個xml配置文件加載上下文定義烹玉,適用于xml配置方式。
有了以上理解阐滩,問題就很好辦了二打。你只要將你需要IOC容器替你管理的對象基于xml也罷,java注解也好掂榔,總之你要將需要管理的對象(Spring中我們都稱之問bean)继效、bean之間的協(xié)作關(guān)系配置好,然后利用應(yīng)用上下文對象加載進我們的Spring容器装获,容器就能為你的程序提供你想要的對象管理服務(wù)了瑞信。
參考:https://www.cnblogs.com/chenbenbuyi/p/8166304.html