简介:
IOC【Inversion of Control】控制反转:一种设计思想,由容器将设计好的对象交给容器控制,而非对象内部直接new。
实现原理:
反射和工厂模式:反射 通过对象的描述信息生产出完整的对象,工厂模式 松耦合获取Bean对象。
加载过程:
xml | 注解 | java类
概念状态----定义状态
实例化容器上下文对象 ApplicationContext | AnnotationConfigApplicationContext;
调用Bean工厂后置处理器完成扫描;
循环解析扫描出来的类信息;
实例化BeanDefinition对象存储解析出来的类信息;
把实例化好的BeanDefinition对象put到BeanDefinitionMap当中缓存,以便后面实例化Bean;
再次调用其他Bean工厂后置处理器;
定义状态----纯净状态
加工类信息 BeanFactoryPostProcessor
遍历所有扫描出来的类信息进行验证;并判断是否Lazy|Prototype|abstract等。
实例化对象【并不是完整的Bean】
纯净状态---成熟状态
处理合并后的BeanDefinition
判断是否需要属性注入
如果需要就开始注入属性
初始化
判断bean的类型回调Aware接口
调用生命周期回调方法
需要代理就完成代理 AOP
创建完成
put到单例池
bean完成
存在spring容器种