Spring 源码阅读原因及背景
工作低效的一些原因
在工作时经常出现问题,有的问题很明确,例如:
- XXX bean 找不到
- XXX bean 有多个符合条件
但是也经常遇到一些问题,启动不报错,但是你的功能就是没有,比如:
前一段时间一个同事的跨域配置没生效,我们检查了很久发现配置是生效的,完全没有思路。
最终我们通过在
CorsFilter
打断点的方式最终发现是在配置文件中多打了一个空格,导致CorsFilter
在比对前端传来的 header 时发现不匹配,直接返回 "403"。
这种隐秘的问题一般会耽误我们大量的时间,而我们花费大量时间的原因只有一个:我们拿不到第一手的数据。
我的导师曾经说过,想快速、准确的定位问题,还是要拿到第一手的数据。
在我之前遇到的问题中也有很多因为这个原因而大量耽误时间的情况,总结来说大概有以下几个方向:
- 公司或者ide给你包好的东西,直接从页面、权限上屏蔽了底层的返回结果,比如公司的nginx配置、idea 的maven窗口爆红
- 一些复杂的框架,复杂到你不想往里看。
其中:
- 对于第一种情况,推荐平时有意识的培养起扎实的 shell 功底和命令行启动的能力,最好直接依赖厂家的输入输出,不要在中间再有其他的东西隔着。另外,对于公司包好的东西,【尤其是服务端的东西】,看能不能通过跳板机实现命令行操作,毕竟这样对程序员来说更加直观
- 对于第二种情况,只能说坚定一种信念【对于java程序员来说】:我们接触的绝大部分Java框架都可以用Java SE 的知识进行解读,我们需要记住的只有 jdk 的基本 api 和 java语言的基本语法,剩下的都是需要理解的东西,千万不要把他们当作黑盒来搞,这样以一个正常人的精力是绝对不够用的。
提高改bug效率的计划
对于一些 shell 的东西和命令行的东西,我们平时遇到什么再现场总结吧。对于一些比较经典比较大的框架,有计划的、持续的学习能慢慢增加我们的"内功“。后面 摊上事 时也有思路,不慌乱。
所以我打算将 Spring 框架的常用功能进行有序的梳理一遍,梳理完成后会继续扩展向 Spring 的一些扩展组件,例如:持久化组件、消息队列组件等等。
也希望通过源码阅读提高自己的程序设计能力。
工具及思路
考虑到组内没有学习Java的环境,我决定通过《Spring 源码深度解析》来引导自己学习,主要通过自行阅读 Spring 5.0.X 的代码,以避免书中的错误并对 Spring 源码获得更具体的认识。
网友评论