Spring中BeanFactory和ApplicationContext的區別是什麼?

Spring中BeanFactory和ApplicationContext的區別是什麼?


BeanFactory: BeanFactory是spring中比較原始,比較古老的Factory。因為比較古老,所以BeanFactory無法支持spring插件,例如:AOP、Web應用等功能。

ApplicationContext ApplicationContext是BeanFactory的子類,因為古老的BeanFactory無法滿足不斷更新的spring的需求,於是ApplicationContext就基本上代替了BeanFactory的工作,以一種更面向框架的工作方式以及對上下文進行分層和實現繼承,並在這個基礎上對功能進行擴展:

<1>MessageSource, 提供國際化的消息訪問

<2>資源訪問(如URL和文件)

<3>事件傳遞

<4>Bean的自動裝配

<5>各種不同應用層的Context實現

區別:

<1>如果使用ApplicationContext,如果配置的bean是singleton,那麼不管你有沒有或想不想用它,它都會被實例化。好處是可以預先加載,壞處是浪費內存。

<2>BeanFactory,當使用BeanFactory實例化對象時,配置的bean不會馬上被實例化,而是等到你使用該bean的時候(getBean)才會被實例化。好處是節約內存,壞處是速度比較慢。多用於移動設備的開發。

<3>沒有特殊要求的情況下,應該使用ApplicationContext完成。因為BeanFactory能完成的事情,ApplicationContext都能完成,並且提供了更多接近現在開發的功能。

Spring中BeanFactory和ApplicationContext的區別是什麼?



分享到:


相關文章: