BeanFactory和ApplicationContext是Spring的兩大核心接口,都可以當做Spring的容器。其中ApplicationContext是BeanFactory的子接口。
BeanFactory:是Spring裏面最底層的接口,包含了各種Bean的定義,讀取bean配置文檔,管理bean的加載、實例化,控制bean的生命週期,維護bean之間的依賴關係。
ApplicationContext接口作爲BeanFactory的派生,除了提供BeanFactory所具有的功能外,還提供了更完整的框架功能:繼承MessageSource,因此支持國際化;統一的資源文件訪問方式;提供在監聽器中註冊bean的事件;同時加載多個配置文件;載入多個(有繼承關係)上下文 ,使得每一個上下文都專注於一個特定的層次,比如應用的web層。
BeanFactroy採用的是延遲加載形式來注入Bean的,即只有在使用到某個Bean時(調用getBean()),纔對該Bean進行加載實例化。
ApplicationContext,它是在容器啓動時,一次性創建了所有的Bean
相對於基本的BeanFactory,ApplicationContext 唯一的不足是佔用內存空間。當應用程序配置Bean較多時,程序啓動較慢
BeanFactory通常以編程的方式被創建,ApplicationContext還能以聲明的方式創建,如使用ContextLoader
BeanFactory需要手動註冊,而ApplicationContext則是自動註冊
|