简单实现Spring框架核心功能
2021-09-16 17:35:17 7 举报
AI智能生成
简单实现Spring框架核心功能的思维导图
作者其他创作
大纲/内容
Bean创建的过程
1. 经过推断构造函数后选定合适的构造函数来创建对象
2. 进行依赖注入(以@Autowired为例)
3. Aware回调
4. 初始化前
5. 初始化
6. 初始化后
模拟步骤
模拟扫描Bean
1. 判断传入的配置类是否带有@ComponentScan注解 e.g: new LoocaApplicationContext(AppConfig.class)
2. 获取@ComponentScan注解的值当做扫描路径并扫描所有类
3. 扫描的类如果带有@Component注解则需要创建成bean
如果bean实现了BeanPostProcessor接口则代表是自定义bean的后置处理器,则使用一个List来存储这些自定义bean后置处理器
如果bean没有实现BeanPostProcessor则创建一个BeanDefinition来存储bean对应的属性,并用一个Map来存储所有的BeanDefinition
模拟创建Bean
1. 采用无参构造方法来创建对象实例(此处为了简化不进行推断构造函数)
2. 进行依赖注入,遍历所有属性,如果属性带有@Autowired注解就通过名称来注入值(为了简化使用通过名称)
3. 如果对象实例实现了各种Aware接口则此处调用对应Aware的相应方法(源码以BeanNameAware为例)
4. 遍历存放BeanPostProcessor的List执行BeanPostProcessor中的postProcessBeforeInitialization来处理初始化前方法
5. 如果对象实例实现了InitializingBean接口,来调用afterProtiesSet方法来进行初始化
6. 遍历存放BeanPostProcessor的List执行BeanPostProcessor中的postProcessAfterInitialization来处理初始化后方法
源码地址
收藏
收藏
0 条评论
下一页