1. BeanFactory是Spring的最底層接口,包含bean的定義,管理bean的加載,實例化,控制bean的生命周期,特點是每次獲取對象時才會創建對象。ApplicationContext是BeanFactory的子接口,擁有BeanFactory的全部功能,并且擴展了很多高級特性,每次容器啟動時就會創建所有的對象。 ApplicationContext的額外功能:
- 繼承MessageSource,支持國際化;
- 統一的資源文件訪問方式;
- 提供在監聽器中注冊bean;
- 同時加載過個配置文件;
- 載入多個(有繼承關系)上下文,使得每個上下文都專注于一個特定的層次,比如應用的web層。
2. BeanFactory通常以編程的方式被創建,ApplicationContext可以以聲明的方式創建,如使用ContextLoader。
3. BeanFactory和ApplicationContext都支持BeanPostProcessor,BeanFactoryPostProcessor,但BeanFactory需要手動注冊,ApplicationContext則是自動注冊。