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