BeanFactory和applicationContext之间的区别
spring的BeanFactory和ContextApplication之间的区别
spring容器有两种:BeanFactory和ContextApplication。BeanFactory是一种比较原始的容器,ContextApplication是比较先进的容器
上图是BeanFactory的脑图
xmlBeanFactory是BeanFactory的一种常见实现,实现了Bean工厂的常用方法
ApplicationContext继承了BeanFactory,所以Application具有BeanFactory的所有功能,
继承路径为ApplicationContext->ListableBeanFactory->BeanFactory
同时ApplicationContext还具有以下特点:
1. 利用MessageSource进行国际化数据的加载
ApplicationContext实现了MessageSource接口,MessageSource接口可以根据Locale加载相应的国际化资源
2、强大的事件机制
ApplicationContext的事件机制通过ApplicationEvent和ApplicationListener这两个接口实现,ApplicationContext发布一个Event,所有扩展了ApplicationContext的bean,都会监听到数据,并且做出相应的反应。
3.底层资源的访问
最重要的区别:
BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的spring的配置问题。而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误。