1. 程式人生 > >spring入門——applicationContext與BeanFactory的區別

spring入門——applicationContext與BeanFactory的區別

缺點 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的區別