本项目旨在通过添加精简注释和提供单元测试来帮助开发者更深入地理解 Spring 5 框架的核心原理与设计思想。我们致力于创建一个高质量的学习资源,让Spring源码的学习过程变得更加友好和高效。
简体中文 · English · CHANGELOG · Open an Issue
- 本项目适合具有Spring 使用经验或多年主流语言开发经验的框架源码爱好者。
- 本项目目前基于 Spring 5.1.6 进行二次定制开发和学习,请确保您的本地环境与此版本兼容。
- 环境配置请参考:IntelliJ IDEA 导入 Spring 源码教程。
- 为 Spring 5.1.6 核心模块的关键代码提供精炼、准确的中文注释。
- 补充清晰、有效的单元测试,演示Spring特性的用法或验证特定功能。
- 搭建一个开放协作的平台,鼓励社区成员共同学习和贡献。
我们非常欢迎社区的贡献!为了确保项目的质量和一致性,请遵循以下贡献规范:
- 禁止修改 Spring 原始源码。我们只允许在 Spring 框架允许的范围内进行扩展(例如:实现接口、继承抽象类、使用Spring提供的扩展点等)。请保持Spring源码的纯净性,以确保学习基准的一致。
- 允许对 Spring 源码添加精简注释。注释应专注于解释:
- 核心设计意图:为何这样设计?
- 复杂逻辑:难以一眼看懂的代码块。
- 关键概念:重要变量、参数或方法的职责。
- 易混淆点:容易产生误解的代码行为。
- 请避免过度解释显而易见的简单代码。
- 建议使用 Javadoc 格式的注释,以提高可读性和后续文档生成的可能性。
- 所有您的扩展代码或测试用例都必须存放在项目的
test目录中。这有助于将您的贡献与原始的 Spring 源码清晰地区分开。
为了明确区分贡献代码,请遵循以下命名约定:
- 在
test目录下:- 如果存在多个相关的类(例如:演示同一个Spring模块的多个测试),请新建一个以
X结尾的包(package)来存放。- 示例:
com.example.spring.family.x.guide.tx.MyTransactionXService
- 示例:
- 如果只有单个类(例如:一个独立的单元测试类),请将类名以
X结尾。- 示例:
com.example.spring.family.x.guide.aop.MyAopProxyXTest
- 示例:
- 如果存在多个相关的类(例如:演示同一个Spring模块的多个测试),请新建一个以
- 在提交 Pull Request (PR) 前,强烈建议您先创建 Issue 进行讨论。这有助于我们:
- 避免重复工作。
- 确保您的贡献方向与项目目标一致。
- 在编码前获得反馈,从而提高 PR 的质量和被接受的几率。
- 更好地进行协作和分工。
- Fork 本仓库到您的 GitHub 账户。
- 将 Fork 后的仓库 Clone 到本地。
- 根据 IntelliJ IDEA 导入 Spring 源码教程 配置您的开发环境。
- 根据您打算贡献的内容,创建 Issue 进行讨论。
- 在本地修改代码(添加注释或编写测试用例),并遵循上述规范。
- 提交您的修改到您的 Fork 仓库。
- 创建 Pull Request 到本仓库的
master分支。 - 等待项目维护者的评审和反馈。
感谢您对 Spring5 Guide X 指南的关注与支持!让我们一起构建一个更好的Spring框架学习项目!
