Spring初始化和创建对象流程
大致流程概念图:
文字说明:
- Spring项目启动后,首先创建Spring容器,然后加载xml等配置文件、解析,将读取到的内容存放到BeanDefinition(bean的定义信息中);
- Spring容器在完成相关初始化和配置后,开始从Spirng容器中获取beanDefinitionNames(bean定义信息的名称集合),然后遍历beanName,去调用getBean()方法,触发容器对Bean实例化和依赖注入过程。
- 在Spring中,实例化和初始化是分离的, 实例化:只是在堆中分配一块存储空间,其相关属性都是对应类型的默认值;
初始化:包括属性的填充和执行init()方法; - 在初始化中流程中:
4.1完成属性的填充;
4.2执行实现aware接口需要实现的方法;
4.3执行beanPostProcessorBefore实现前置处理;
4.4执行init()初始化方法;
4.5执行beanPostProcessorAfter实现后置处理; - 执行完初始化方法后,该bean才成为一个完整的对象。