spring入門——applicationContext與BeanFactory的區別
阿新 • • 發佈:2017-05-24
缺點 alt .get 執行 tex app blog actor cati
我們知道從applicationContext容器對象中如何獲取Bean了,其實spring框架還有另外一種獲取bean的方法:BeanFactory代碼如下:
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/hsp/ioc/beans.xml")); 類1 對象1 =(類1)factory.getBean("類1");
那麽,兩者之間有啥區別呢?
applicationContext
當我們使用applicationContext來獲取對象的時候,只要我們實例化容器,那麽所有的對象都會被實例化(前提是將bean配置成單例模式,如果不是單例模式,也不會預加載,因為容器無法確定服務器究竟需要多少個對象)。
BeanFactory
而當我們使用BeanFactory去獲取bean的時候呢,首先實例化該容器,容器中的對象是否立即實例化,根據配置文件的配置來進行配置。如果容器的bean配置的是不被立即實例化,那只有執行getBean 的代碼去獲取某個bean的時候,容器才會將對象實例化。
對比
使用applicationContext的好處就是:所有的對象都可以預加載,缺點就是消耗服務器的內存;而我們使用BeanFactory的話,好處是節約內存,缺點則是速度會相對來說慢一些。而且有可能會出現空指針異常的錯誤。而且通過bean工廠創建的bean生命周期會簡單一些。
spring入門——applicationContext與BeanFactory的區別