怒肝8个月源码,我成为了 Spring 开源贡献者(续)

简介: 我最近一直在写Spring的文章,而且仅仅是Spring FrameWork的文章 ,从最开始的官网入门到现在源码的深度分析。

碰到的问题

担心闹乌龙

虽然在之前我已经调试过了无数次代码,但是心里还是没谱啊。毕竟我这么谨(cai)慎(ji)的一个人,万一被人喷了怎么办?不知道你会不会这么想,反正我当时就是这么想的,如果你是这么想的,建议你去看看别人提交的 issue。搜索条件如下

微信图片_20220414200943.png

is:closed label:"status: invalid"

我觉得你看几个,自然就有信心了!

不知道要怎么提交

每个开源的项目,只要作者希望这个项目越来越好的话,都会详细的说明如何给这个项目做开源贡献,Spring肯定也不例外,这里还是以提交 issue 为例,当你点击 New issue 的时候会出现下面这张图

微信图片_20220414200948.png

在上图左边的框里很明确的告诉了你提交issue应该要注意什么

  • 首先,你应该要去 Stack Overflow 提问
  • 如果是 bug,你应该要指明版本以及你想要做什么
  • 如果是一个增强的话,要提供上下文并且描述清楚问题
  • 同一个问题,issue 跟 PR 最好只提交一个,因为 GitHub 认为它们是一样的,如果你还不能确定的话,先提交一个 issue

而右上角还有更加详细的文档可供参考。

英文

大家应该看到了,整个 issue 都是用英文写的,那么英文不好怎么办呢?这个时候就要掏出我们的神器了

微信图片_20220414200952.png

嗯,就是词典,笔者习惯是使用有道词典。我建议英文不好的同学可以这样,先将整个 issue 用中文写好,如果你真的英文一窍不通的话,可以直接通过翻译软件逐句翻译,然后粘贴到 GitHub 上。但是千万千万不要使用中文,就像下面这个哥们

issue链接:https://github.com/spring-projects/spring-framework/pull/25127

微信图片_20220414200956.png

像这种 issue 是会被直接打上 invalid(不合格)标签的,你就想想吧,你学不会英文,你指望我们的外国朋友能看懂中文嘛?是我中华上线五千年的文化不够博大精深吗?

担心问题描述的不清楚

其实这个问题就是因为英文不好衍生出来的。因为英文不好,自然就会担心我写的东西他能不能看懂呢?我的建议就是,结合你测试的代码去描述问题。你不用去担心别人看不懂你写的代码,就以我那个 issue 的处理流程为例吧。

微信图片_20220414201000.png

在你刚刚提交issue时,有专门的issuemaster(issue管理员)会给你提交的 issue 打上一个 wait-for-triage 的标签,标志这个 issue 是待处理的。

随后我提交的这个 issue,就被指派给了jhoeller。你要担心他看不懂代码吗?给你看两个东西吧

微信图片_20220414201004.png

你知道那个红框是啥意思吗?就是说我发现的那个有问题代码的类的作者就是他。

再看一张

微信图片_20220414201008.png

就是说,jhoeller从 2003 年开始就已经是 Spring 这个项目的管理者以及发布经理了。2003 年,我还是一个小学生........

微信图片_20220414201011.jpg

所以啊,只要你稍微正常点,基本上人家都能 get 到你的点。

给你的建议

其实笔者从发现这个问题到最终提交 issue 大概经过了一周时间,期间一直在犹豫要不要提交 issue,就是因为上面提到的几个问题,一直踌躇不前。但是等我下定决心要去做这件事的时候总共就花了几个小时的时间。包括研究issue 提交的规则以及写一篇英文版的 issue。并且我提交 issue 的第二天就马上被处理了,并且jhoeller在 f9aae8d 这个 commit 中已经接受我的建议。

所以我要说的就是,

真正动手的话,不管什么问题总能找到解决方案

而只是停留在空想,在踌躇,你永远有一堆问题

临渊羡鱼,不如退而结网

以此文与君共勉!

相关文章
|
21天前
|
缓存 Java 开发工具
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
三级缓存是Spring框架里,一个经典的技术点,它很好地解决了循环依赖的问题,也是很多面试中会被问到的问题,本文从源码入手,详细剖析Spring三级缓存的来龙去脉。
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
|
21天前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
|
6天前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
15 4
|
11天前
|
XML 缓存 Java
spring源码剖析-spring-beans(内部核心组件,BeanDefinition的注册,BeanWapper创建)
spring源码剖析-spring-beans(内部核心组件,BeanDefinition的注册,BeanWapper创建)
39 10
|
11天前
|
XML 存储 Java
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
|
10天前
|
XML 存储 Java
Spring-源码深入分析(二)
Spring-源码深入分析(二)
|
10天前
|
XML 设计模式 Java
Spring-源码深入分析(一)
Spring-源码深入分析(一)
|
8天前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
2月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
|
3月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
下一篇
无影云桌面