总:
- 控制反转(IOC):理论思想,传统java开发模式,对象是由使用者来进行管理,有了spring后,可以交给spring来帮我们进行管理。
- 依赖注入(DI):把对应的属性的值注入到具体的对象中,@Autowaired,populateBean完成属性值的注入。
- 容器:存储对象,使用map结构来存储,spring中一般存在三级缓存,singletonObjects存放完整的bean对象。
分:
- ioc容器的创建(beanFactory,DefaultListableBeanFactory),向bean工厂中设置一些参数(BeanPostProcessor,Aware接口子类)等等属性。
- 加载解析bean对象,准备要创建的bean对象定义的beanDefintion(xml或者注解解析的过程)。
- beanFactoryPostProcessor的处理,此处是扩展点,PlaceHodlerConfigurSupport,ConfigurationClassPostProcessor。
- BeanPostProcessor的注册功能,方便后续选对bean对象完成具体的扩展功能。
- 通过反射的方式将BeanDefinition对象实例化成具体的Bean对象。
- bean对象的初始化过程(填充属性,调用aware子类的方法,调用BeanPostProcessor前置处理方法,调用init-method方法,调用BeanPostprocessor后置处理方法)。
- 生成完整的bean对象,通过getBean方法可以直接获取。
- bean销毁过程。
bean生命周期