区别一:
ApplicationContext使用饥饿方式加载单例的bean,无论bean后面是否被用到,而BeanFactory的单例bean通过getBean方法调用才会加载;所以导致使用ApplicationContext启动比BeanFactory要慢,更占用内存,但是好处就是在使用bean的过程中不需要在创建bean了提高了运行期的效率,并且在启动过程中便验证了bean的准确性,将问题暴露在启动过程中。
区别二:
BeanFactory仅仅提供了容器的基本功能,ApplicationContext除了提供BeanFactory的基本功能外,还提供了其他的功能:BeanFactoryPostProcessor、国际化、事件的发布监听;ApplicationContext是基于BeanFactory的扩展,可以这么说ApplicationContext是一个人的话那么BeanFactory就是一个人的心脏。