1. 程式人生 > >Spring容器的兩種方式詳解

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都不再是懶載入)。

                   以上個人總結、希望對大家有幫助!