SPRING IOC
本文已参与「新人创作礼」活动,一起开启掘金创作之路。
什么是IOC
IOC就是控制反转:是一种设计理念,把对象的创建和调用过程交给容器进行管理。
优点是:
1)实现资源的可配置和易管理
2)降低代码耦合度
DI:依赖注入,把对应的属性值注入到具体的对象中,由 @Autowired、 @resource注解完成,使用配置文件定义bean时,由populateBean完成注入。
spring容器:使用map结构的三级缓存来存储对象,bean的整个生命周期都由容器来管理。
容器的创建过程
1.(beanFactory,DefaultListableBeanFactory),向bean工厂中设置一些参数(BeanPostProcessor,Aeare接口的子类)等等属性。
2.加载解析bean对象,准备要创建的bean对象的定义对象beanDefinition(xml或者注解的解析过程)
3.beanFactoryPostProcessor的处理,此处是扩展点,PlaceHolderConfigurSupport,ConfigurationClassPostProcessor
4.BeanPostProcessor的注册功能,方便后续对bean对象完成具体的扩展功能
5.通过反射的方式将BeanDefinition对象实例化成具体的bean对象
6.bean对象的初始化过程(填充属性,调用aware子类的方法,调用BeanPostProcessor前置处理方法,调用init-mehtod方法,BeanPostProcessor的后置处理方法)
7.生成完整的bean对象,通过getBean方法可以直接获取
8.销毁过程