BeanDefinition 中保存了我们的 Bean 信息,比如这个 Bean 指向的是哪个类、是否是单例的、是否懒加载、这个 Bean 依赖了哪些 Bean 等等。
SpringBean是被ApplicationContext管理的吗?
通过Debug的过程中我们可以看到我们使用ClassPathXmlApplicationContext构造的ApplicationContext对象其实在内部维护了一个属性名为beanFactory,我们的SpringBean都被定义在这个属性里面,也就是说beanFactory这个属性才是容器,ApplicationContext仅仅是做了一层包装.那么beanFactory又是什么呢?
public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable { ... }可以看到DefaultListableBeanFactory类也是Bean容器,而且是继承了所有其他的容器的功能,可以说是最为强大的容器;例如具有(分层,获取多个容器,注入功能....)
本章小结第一次参阅源码写的比较慎重,其中由于身体抱恙又有所当误,所以在发布本章的时候也是几天后了,总的来说本章并没有什么重点,仅仅是把Spring的IOC容器的启动过程进行了标注,并未做过多底层的深度剖析,例如loadBeanDefinitions(beanFactory)Spring如何将XMl文件的配置装载入Bean工厂,以及后面的每个注释都可以新开一篇长篇大论的文章,后面尽可能的在Spring Framework深度剖析专栏中更为详细的学习Spring整体架构源码