ApplicationContext的裝配方式
- 應(yīng)用上下文類路徑加載ClassPathXmlApplicationContext:
ApplicationContext ac=new ClassPathXmlApplicationContext("配置文件路徑");
- 文件系統(tǒng)加載 FileSystenXmlApplicationContext:
FileSystenXmlApplicationContext ac=new FileSystenXmlApplicationContext("配置文件絕對(duì)路徑");
//絕對(duì)路徑,windows平臺(tái)注意字符轉(zhuǎn)義。
- Web系統(tǒng)加載XmlWebApplicationContext:
ApplicationContext ac=new XmlWebApplicationContext("配置文件路徑");
//web開發(fā)所使用,在tomcat啟動(dòng)時(shí)自動(dòng)加載。
ApplicationContext與BeanFactory裝配的區(qū)別
- ApplicationContext: 配置文件中是否配置bean的作用域,即屬性scope的有無(wú)。
當(dāng)未配置scope,默認(rèn)配置為scope="singleton",在執(zhí)行ApplicationContext ac=new ClassPathXmlApplicationContext("配置文件路徑");語(yǔ)句后;容器加載的同時(shí)會(huì)實(shí)例化容器中的bean,創(chuàng)建引用與分配內(nèi)存空間(也就是幫你完成了new bean類的操作)。 - BeanFactory:在執(zhí)行
BeanFactory factory=new ClassPathResource("配置文件路徑");時(shí),僅加載容器,而不實(shí)例化其中的bean,實(shí)例化的過(guò)程放在getBean()函數(shù)調(diào)用時(shí)。 - 優(yōu)劣:前者使用預(yù)先加載,但消耗內(nèi)存,表現(xiàn)快速;后者延遲加載,但不消耗內(nèi)存,性能變現(xiàn)會(huì)差一些。(內(nèi)存大的設(shè)備用前者,內(nèi)存不值錢。。。)
bean的作用域

bean的作用域
scope="singleton",意味著預(yù)先加載,且在整個(gè)容器周期中僅分配同一個(gè)地址的類對(duì)象空間,不管你調(diào)用多少次getBean()。scope="prototype",意味著延遲加載,因?yàn)槿萜鞑恢滥愕降滓峙涠嗌俅螌?duì)象空間,所以當(dāng)你調(diào)用getBean(),就會(huì)得到與上一次調(diào)用不同的內(nèi)存地址。