【仿写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的初始化阶段

相关推荐
硅基动力AI7 小时前
如何判断一个关键词值不值得做?
java·前端·数据库
重生之后端学习8 小时前
78. 子集
java·数据结构·算法·职场和发展·深度优先
那起舞的日子8 小时前
斐波那契数列
java·算法
想用offer打牌9 小时前
一站式了解接口防刷(限流)的基本操作
java·后端·架构
何中应9 小时前
RabbitMQ安装及简单使用
分布式·后端·消息队列
何中应9 小时前
使用Python统计小说语言描写的字数
后端·python
何中应9 小时前
SpringAMQP消息转化器
分布式·后端·消息队列
姜源Jerry9 小时前
【Trae】Trae IDE&SOLO浅尝
java·ide·ai
宇木灵9 小时前
C语言基础-三、流程控制语句
java·c语言·前端