# small-spring **Repository Path**: zhxgxn/small-spring ## Basic Information - **Project Name**: small-spring - **Description**: 手写spring,学习spring源代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-08 - **Last Updated**: 2026-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 手写spring源码核心功能 Bean容器 -> 作用域 定义&注册 -> Cglib代理 实例化策略 -> 初始化&销毁 属性填充 -> 循环依赖 资源加载 -> 包扫描 上下文 -> 事件监听 ### 1、small-spring-step-01 Spring容器 Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一种用于承载对象的容器。 选择HashMap当做Spring容器,通过实现Bean的定义、注册(也就是存入容器)、获取 * 定义:BeanDefinition,它会包括 singleton、prototype、BeanClassName 等 * 注册:这个过程就相当于我们把数据存放到 HashMap 中,只不过现在 HashMap 存放的是定义了的 Bean 的对象信息。 * 获取:最后就是获取对象,Bean 的名字就是key,Spring 容器初始化好 Bean 以后,就可以直接获取了 如图所示:![](./images/17954354951400.png) ### 2、small-spring-step-02 Spring容器 编码方式主要依托于:接口定义、类实现接口、抽象类实现接口、继承类、继承抽象类 这些操作方式可以很好的隔离开每个类的基础功能、通用功能和业务功能,当类的职责清晰后,你的整个设计也会变得容易扩展和迭代 **本次** * 把 Bean的创建交给容器,而不是我们在调用时候传递一个实例化好的 Bean 对象 * 另外还需要考虑单例对象,在对象的二次获取时是可以从内存中获取对象的 * Bean 注册的时候只注册一个类信息 如图所示:![](./images/20321885964800.png) 类关系图:![](./images/22284902806400.png)