【仿写spring之ioc篇】一、预期目标以及项目结构介绍

前言

最近系统的学习了一下spring的源码,准备简单仿写一下spring,目前是仿写ioc篇,在ioc篇中将完成整套的bean的生命周期,当然是简单的实现,不会像spring真正源码那样做非常系统性的校验以及接口设计。

预期目标

  1. 将所有带有@Component注解的类注册成bean
  2. 将@Bean的方法注册成bean
  3. 实现bean的生命周期,即创建,初始化以及销毁等操作

这里建议不了解bean的生命周期的小伙伴先来看一下博主的文章
【spring】spring bean的生命周期

项目结构

流程分析

  1. 启动项目,扫描目标路径下的所有带有@Component注解的java文件
  2. 扫描目标路径下的所有带有@Configuration注解中的@Bean注解标记的方法
  3. 遍历前两步得到的集合执行bean的生命周期
  4. 通过newInstance获取空实例
  5. 通过反射调用set方法
  6. 检查Aware接口并通过Aware调用
  7. 将bean交给BeanPostProcessor进行初始化
  8. 执行@PostConstruct
  9. 检查InitializingBean
  10. 从BeanPostProcessor获取bean并保存在BeanFactory中
  11. 关闭项目时销毁bean

开源地址

仿写spring-Gitee

后续更新

【仿写spring之ioc篇】二、bean生命周期中的创建以及属性赋值
【仿写spring之ioc篇】三、检查是否实现了Aware接口并且执行对应的方法
【仿写spring之ioc篇】四、实现bean的初始化阶段

相关推荐
Asthenia04121 分钟前
为什么MySQL关联查询要“小表驱动大表”?深入解析与模拟面试复盘
后端
南雨北斗4 分钟前
分布式系统中如何保证数据一致性
后端
Asthenia04128 分钟前
Feign结构与请求链路详解及面试重点解析
后端
WuWuII9 分钟前
gateway
java·gateway
左灯右行的爱情11 分钟前
缓存并发更新的挑战
jvm·数据库·redis·后端·缓存
浩宇软件开发15 分钟前
Android开发,实现一个简约又好看的登录页
android·java·android studio·android开发
brzhang15 分钟前
告别『上线裸奔』!一文带你配齐生产级 Web 应用的 10 大核心组件
前端·后端·架构
shepherd11116 分钟前
Kafka生产环境实战经验深度总结,让你少走弯路
后端·面试·kafka
南客先生21 分钟前
多级缓存架构设计与实践经验
java·面试·多级缓存·缓存架构
anqi2724 分钟前
如何在 IntelliJ IDEA 中编写 Speak 程序
java·大数据·开发语言·spark·intellij-idea