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

相关推荐
摇滚侠3 分钟前
SpringMVC 入门到实战 SpringMVC 的执行流程 96
java·后端·spring·maven·intellij-idea
唐青枫5 分钟前
Java Liquibase 实战指南:让数据库变更像代码一样可追踪
java
qq_422152579 分钟前
PDF 解密工具怎么选?2026 年文档密码移除方案与注意事项
java·前端·pdf
布朗克16818 分钟前
38 Spring Boot入门——自动配置、核心注解与Starter机制
java·spring boot·后端
程序员老申23 分钟前
外呼突然全挂了,追查 24 分钟后我发现了 etcd 最阴的一颗雷
后端·程序员
何以解忧,唯有..23 分钟前
Go语言变量的声明方式详解
开发语言·后端·golang
长栎24 分钟前
MyBatis 缓存为啥总是失效?装饰器模式套娃的代价
后端
bright_ye26 分钟前
setjmp & longjmp 深度详解 + 代码示例
后端
To_OC26 分钟前
我一直以为 Ajax 是个黑盒,直到我写了这 50 行代码
前端·后端·全栈
沪漂阿龙26 分钟前
LangChain 系列:Structured Output结构化输出与源码解析
java·人工智能·架构·langchain