1. BeanFactory是Spring的最底层接口,包含bean的定义,管理bean的加载,实例化,控制bean的生命周期,特点是每次获取对象时才会创建对象。ApplicationContext是BeanFactory的子接口,拥有BeanFactory的全部功能,并且扩展了很多高级特性,每次容器启动时就会创建所有的对象。 ApplicationContext的额外功能:
- 继承MessageSource,支持国际化;
- 统一的资源文件访问方式;
- 提供在监听器中注册bean;
- 同时加载过个配置文件;
- 载入多个(有继承关系)上下文,使得每个上下文都专注于一个特定的层次,比如应用的web层。
2. BeanFactory通常以编程的方式被创建,ApplicationContext可以以声明的方式创建,如使用ContextLoader。
3. BeanFactory和ApplicationContext都支持BeanPostProcessor,BeanFactoryPostProcessor,但BeanFactory需要手动注册,ApplicationContext则是自动注册。