Spring容器的兩種方式詳解
1、Spring容器初始化兩種方式
(1)ApplicationContext(子類)
//預設載入檔案系統的配置檔案,主要配置檔案放在專案下、本地上、類路徑下(3種位置)
ApplicationContext ac=new FileSystemXmlApplicationContext("classpath:beans.xml");
//預設載入ClassPath路徑下的配置檔案
ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:beans.xml");
(2)BeanFactory(父類)
Resource resource=new ClassPathResource("beans.xml");
//初始化spring容器的程式碼
BeanFactory beanFactory=new XmlBeanFactory(resource);
//呼叫Bean
Person person=(Person)beanFactory.getBean("person");//person為配置檔案bean中自定義的id名稱
2、兩種容器的區別:
(1)ApplicationContext
特點:初始化容器的同時把所有bean例項化。
缺點:記憶體消耗比較嚴重。
優點:能夠及時發現bean配置的錯誤資訊,便於及時除錯,開發環境用得多。
2.BeanFactory(懶載入,意思用到哪個Bean才載入哪個Bean,所以個人感覺懶載入)
特點:初始化容器的同時不會把所有bean例項化,所以給人感覺bean懶載入,有人呼叫bean的時候容器
才會把bean例項化。
優點:節省記憶體。
缺點:不能及時發現bug,開發環境用得不多。
3、總結:以上兩種方法是可以轉換的。在配置檔案中,如果在bean標籤內新增 lazy-init="true",那麼bean在容器初始化的時候 將不會被例項化 ,則變成懶載入。如果lazy-init="false",那麼bean在容器初始化的時候將自動例項化,不再是懶加 載。 (當遇到多個bean,如配置檔案中有100個bean的話,這樣每個bean新增lazy-init="true",效率太低下,可以在 配置檔案xml的標籤頭部新增default-lazy-init="false" ,則配置檔案中的所有bean都不再是懶載入)。
以上個人總結、希望對大家有幫助!