从结构上来看
ApplicationContext 继承了 ListableBeanFactory ,ListableBeanFactory 又继承了BeanFactory ,也就是说ApplicationContext间接的继承自BeanFactory,而BeanFactory是spring的根接口。
从功能上看
BeanFactory仅提供了最简单的容器功能;
ApplicationContext在BeanFactory的基础之上,还体用了更多面向应用的功能,例如国际化等
从两者装载bean过程来看
BeanFactory在启动的时候不会去实例化Bean,只有有从容器中取Bean的时候才会去实例化;
ApplicationContext在启动的时候就把所有的Bean全部实例化了。它也可以为Bean配置lazy-init=true来让Bean延迟实例化;
从使用角度看
BeanFactory是Spring 框架的基础设施,面向Spring 本身,而ApplicationContext面向Spring框架的使用者,几乎所有的应用场合都可以直接使用ApplicationContext,而非底层的BeanFactory