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