ApplicationContext是Spring IoC容器的顶级接口,它继承了BeanFactory接口,因此可以将ApplicationContext视为BeanFactory的子接口。
我们可以用一个形象的比喻来说明这一关系:ApplicationContext就像一家4S店,专注于销售汽车,但不直接参与制造;而BeanFactory则如同一个工厂,专门负责生产汽车,却不进行销售。这样的区分使得Spring框架在管理和使用Bean时更为灵活与高效。
注意:BeanFactory中不光只有单例池,还有一些其他的东西,如下图:
可以看出IOC容器中包含一个beanFactory对象,而该对象的各个父类中又定义了很多属性值,包含我们的bdMap集合,bdName集合,单例池,singletonFactories三级缓存,earlySingletonObject二级缓存,servletContext应用上线文,beanPostProcessor实现类后置处理器集合等等,所以其并不是仅指单例池。
如果您希望更深入地学习Spring源码,我强烈推荐您访问以下项目链接:https://gitee.com/chengyadong555/spring-framework.git。在这个项目中,对Spring源码进行了逐行分析,作者不仅提供了丰富的注释,还融入了自己独到的理解和见解。