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中存在的配置错误。 

原文地址:https://www.cnblogs.com/zhangchiblog/p/9000191.html