一个类实例化过程
BeanDefition结构图
- 即一个类变成容器中管理的过程 先是通过注解 扫描也好 @Service等 @Bean @Import等 扫描这些注意–>进而扫描类属性
统一放到BeanDefition里类定义属性里 - 遍历这个BeanDefitionMap 进行预先实例化检查过滤(比如配了没引jar包 过滤一些重复的)
- 在预实例化前可以通过BeanPostProcesser 进行篡改修改字段属性,而按你修改后的属性进行实例化
BeanFactoryPostProcesser
实例化之前篡改
BeanPostProcessor
实例化之后 进行属性的字段的修改
@import
即 ImportBeanDefinitionRegister
ImportSelector
都可以往DefintionMap里放信息
@Import
@Import(value={Inst.class}) Inst.class 只是一个普通的类
@Import(value={TulingImportBeanDefinitionRegister.class}) 导入的组件实现了ImportBeanDefinitionRegister接口
@Import(value ={TulingImportSelector.class}) 导入一个组件实现了ImportSelector
ImportBeanDefinitionRegister
ImportSelector
spring自动装配
是通过实现importSelector的注解方式来构建 类名数组
数组中的类的名字是通过
springFactactories.loader来装载进来的