一, 整个加载的完整链路图
更详细的生命周期函数链路图(仅供参考)
二, Bean实例化的四种方式:
1, 无参构造器(默认且常用)6
2, 静态工厂方法方式(factory-method指定实例化的静态方法)
3, 实例工厂方法方式(factory-bean指定bean的name,factory-method指定实例化方法)
4, 实现FactoryBean接口方式(实现getObject和getObjectType方法)
三, Bean的实例化过程分为两个阶段:
1, 容器启动阶段
1, 配置元信息(xml、properties、yml、yaml、硬编码等)
2, BeanDefination(对象通过BeanDefination进行管理)
3, BeanDefinationReader(不同的元信息通过BeanDefinationReader进行加载,最后统一由BeanDefination管理)
4, BeanDefinationRegistry(键值对的形式存储,key为bean的ID,value就是对应的BeanDefination)
5, BeanFactoryPostProcessor(底层采用AOP切面的方式可以对BeanDefination中存储的Bean进行修改、替换,也可以添加新的Bean对象)