俩者都是IOC的容器,只不过BeanFactory是作为spring IOC的基础容器,定义了最基础的获取bean的相关API,而ApplicationContext是作为一个高级容器来存在的,其实是内部也持有了一个BeanFactory,然后扩展了一些基础容器没有的功能,比如信息的国际化、支持事件机制、web方面的扩展等等。下面以图来比划一下
applicationContext.png BeanFactory.png
通过上面俩张图就可以看出俩者之间的关系了,但是准确来说我不认为ApplicationContext是继承了BeanFactory,因为通过看源码可以指定其实是因为内部含有一个DefaulListableBeanFactory,基本的容器的相关方法还是BeanFactory来完成的,只是扩展了其他方面的功能,可以感觉是一个适配器模式
网友评论