Spring IOC详解 以及 Bean生命周期详细过程
IOC :控制反转
对象交于容器控制 用户只关注业务需求
反转就是让实例来找对象
所以bean对象的创建是依赖容器的
通过容器注入bean对象 也就是说容器会自动找到和bean对象匹配的类型实例注入到对象中。
spring ioc的加载过程
BeanDefinitionReader是加载配置文件的统一接口 由各个加载方式进行实现,如果后期你想要用json的方式进行配置 只需要实现这个接口即可。
BeanDefinition:存储bean的定义信息
BeanFactoryPostProcessor:后置增强器(可能是一个或者多个),对BeanDefinition对象进行扩展功能 实现原理基于动态代理AOP
bean的生命周期:
对象的实例化
对象的初始化
使用中(完整对象)
销毁
实例化:
实例化前置 InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()
对象的实例化–反射
实例化后置 InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
属性修改 InstantiationAwareBeanPostProcessor.postProcessPropertyValues()
初始化:
给用户属性赋值 populateBean
给容器属性赋值 执行实现了Aware接口的方法
初始化前