{"id":14972972,"url":"https://github.com/derekyrc/mini-spring","last_synced_at":"2025-05-14T06:06:46.749Z","repository":{"id":37398708,"uuid":"313605398","full_name":"DerekYRC/mini-spring","owner":"DerekYRC","description":"mini-spring是简化版的spring框架，能帮助你快速熟悉spring源码和掌握spring的核心原理。抽取了spring的核心逻辑，代码极度简化，保留spring的核心功能，如IoC和AOP、资源加载器、事件监听器、类型转换、容器扩展点、bean生命周期和作用域、应用上下文等核心功能。 ","archived":false,"fork":false,"pushed_at":"2024-08-15T03:46:31.000Z","size":1085,"stargazers_count":5947,"open_issues_count":31,"forks_count":1388,"subscribers_count":90,"default_branch":"main","last_synced_at":"2025-04-08T23:18:59.377Z","etag":null,"topics":["mini-spring","spring","spring-boot","spring-mvc","springboot","springframework","tiny-spring"],"latest_commit_sha":null,"homepage":"https://github.com/DerekYRC/mini-spring","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DerekYRC.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-17T11:59:18.000Z","updated_at":"2025-04-08T17:23:52.000Z","dependencies_parsed_at":"2023-11-30T13:29:09.282Z","dependency_job_id":"cb26fe3f-3ea6-48a9-a432-50aaa25ca74f","html_url":"https://github.com/DerekYRC/mini-spring","commit_stats":{"total_commits":149,"total_committers":12,"mean_commits":"12.416666666666666","dds":"0.21476510067114096","last_synced_commit":"0a14861c7be1a942a6cfe037ba012a59dfca2755"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerekYRC%2Fmini-spring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerekYRC%2Fmini-spring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerekYRC%2Fmini-spring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerekYRC%2Fmini-spring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DerekYRC","download_url":"https://codeload.github.com/DerekYRC/mini-spring/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254080611,"owners_count":22011453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mini-spring","spring","spring-boot","spring-mvc","springboot","springframework","tiny-spring"],"created_at":"2024-09-24T13:47:51.463Z","updated_at":"2025-05-14T06:06:46.700Z","avatar_url":"https://github.com/DerekYRC.png","language":"Java","readme":"# \u003cimg src=\"assets/spring-framework.png\" width=\"80\" height=\"80\"\u003e mini-spring\n[![Build Status](https://img.shields.io/badge/build-passing-brightgreen)](https://github.com/DerekYRC/mini-spring)\n[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![Stars](https://img.shields.io/github/stars/DerekYRC/mini-spring)](https://img.shields.io/github/stars/DerekYRC/mini-spring)\n[![Forks](https://img.shields.io/github/forks/DerekYRC/mini-spring)](https://img.shields.io/github/forks/DerekYRC/mini-spring)\n\n**[English](./README_en.md) | 简体中文**\n\n**姊妹版：**[**mini-spring-cloud**](https://github.com/DerekYRC/mini-spring-cloud) **(简化版的spring cloud框架)**\n\n## 关于\n\n**mini-spring**是简化版的spring框架，能帮助你快速熟悉spring源码和掌握spring的核心原理。抽取了spring的核心逻辑，**代码极度简化，保留spring的核心功能**，如IoC和AOP、资源加载器、事件监听器、类型转换、容器扩展点、bean生命周期和作用域、应用上下文等核心功能。\n\n如果本项目能帮助到你，请给个**STAR，谢谢！！！**\n\n## 功能\n#### 基础篇\n* [IoC](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#基础篇IoC)\n    * [实现一个简单的容器](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#最简单的bean容器)\n    * [BeanDefinition和BeanDefinitionRegistry](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#BeanDefinition和BeanDefinitionRegistry)\n    * [Bean实例化策略InstantiationStrategy](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#Bean实例化策略InstantiationStrategy)\n    * [为bean填充属性](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#为bean填充属性)\n    * [为bean注入bean](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#为bean注入bean)\n    * [资源和资源加载器](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#资源和资源加载器)\n    * [在xml文件中定义bean](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#在xml文件中定义bean)\n    * [容器扩展机制BeanFactoryPostProcess和BeanPostProcessor](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#BeanFactoryPostProcess和BeanPostProcessor)\n    * [应用上下文ApplicationContext](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#应用上下文ApplicationContext)\n    * [bean的初始化和销毁方法](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#bean的初始化和销毁方法)\n    * [Aware接口](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#Aware接口)\n    * [bean作用域，增加prototype的支持](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#bean作用域增加prototype的支持)\n    * [FactoryBean](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#FactoryBean)\n    * [容器事件和事件监听器](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#容器事件和事件监听器)\n* [AOP](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#基础篇AOP)\n    * [切点表达式](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#切点表达式)\n    * [基于JDK的动态代理](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#基于JDK的动态代理)\n    * [基于CGLIB的动态代理](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#基于CGLIB的动态代理)\n    * [AOP代理工厂ProxyFactory](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#AOP代理工厂)\n    * [几种常用的Advice: BeforeAdvice/AfterAdvice/AfterReturningAdvice/ThrowsAdvice](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#几种常用的AdviceBeforeAdviceAfterAdviceAfterReturningAdviceThrowsAdvice)\n    * [PointcutAdvisor：Pointcut和Advice的组合](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#pointcutadvisorpointcut和advice的组合)\n    * [动态代理融入bean生命周期](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#动态代理融入bean生命周期)\n    \n#### 扩展篇\n* [PropertyPlaceholderConfigurer](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#propertyplaceholderconfigurer)\n* [包扫描](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#包扫描)\n* [@Value注解](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#value注解)\n* [基于注解@Autowired的依赖注入](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#autowired注解)\n* [类型转换（一）](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#类型转换一)\n* [类型转换（二）](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#类型转换二)\n\n#### 高级篇\n* [解决循环依赖问题（一）：没有代理对象](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#解决循环依赖问题一没有代理对象)\n* [解决循环依赖问题（二）：有代理对象](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#解决循环依赖问题二有代理对象)\n\n#### 其他\n* [没有为代理bean设置属性(discovered and fixed by kerwin89)](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#bug-fix没有为代理bean设置属性discovered-and-fixed-by-kerwin89)\n* [支持懒加载和多切面增强(by zqczgl)](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md#支持懒加载和多切面增强by-zqczgl)\n\n## 使用方法\n阅读[changelog.md](https://github.com/DerekYRC/mini-spring/blob/main/changelog.md)\n\n[视频教程(完整版)](https://www.bilibili.com/video/BV1nb4y1A7YJ)\n\n## 提问\n[**点此提问**](https://github.com/DerekYRC/mini-spring/issues/4)\n\n## 贡献\n欢迎Pull Request\n\n## 关于我\n[**点此了解**](https://github.com/DerekYRC)\n\n手机/微信：**15975984828**  邮箱：**15975984828@163.com**\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=DerekYRC/mini-spring\u0026type=Date)](https://star-history.com/#DerekYRC/mini-spring\u0026Date)\n\n## 版权说明\n未取得本人书面许可，不得将该项目用于商业用途\n\n## 参考\n- [《Spring源码深度解析》](https://book.douban.com/subject/25866350/)\n- [《Spring 源码解析》](http://svip.iocoder.cn/categories/Spring)\n- [《精通Spring 4.x》](https://book.douban.com/subject/26952826/)\n- [《tiny-spring》](https://github.com/code4craft/tiny-spring)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekyrc%2Fmini-spring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderekyrc%2Fmini-spring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderekyrc%2Fmini-spring/lists"}