为什么要学习Spring源码,为什么要提高自己

因为自己最近业余时间充足,打算写一点关于Spring的博客

为什么要学习Spring源码???

大多程序员想法

大家可能觉得没有学习必要的源码,我们只要使用源码给我们提供的便捷功能就好了,何必要了解这些便利(bean实例化,依赖注入,AOP,注解事务)是怎么实现的。
之前我和我们的技术组长讨论过,到底是先学习Spring源码,还是多花一点时间学习更实用的技术,比如mybatis-plus呢?


门槛高
其实Spring源码学习门槛比较高,好多代码很难看懂。


我们先不回答以上的问题,我想问大家几个问题

  1. JDK要用动态代理技术?
  2. 在我们的SpringBoot工程里,一个ServiceImpl在整个Java虚拟机中有几个实例对象呢,或者说在JVM的堆区有几个实例对象呢
  3. 为什么加了一个@Component注解,Spring就能帮我实例化这个对象,就可以通过@Autowired注解注解注入
  4. @Autowired注解如何把对象注入进来的,注入进来的是实例对象,还是实例的代理对象呢
  5. 为什么加了@Transcational注解就能实现事务,方法与方法之前事务是怎么传播的,出现ex时候,事务是怎么回滚的呢
  6. 为什么阿里,腾讯,京东,华为,字节那些大厂对Java工程师的要求那么高,不是就是写业务么,我觉得自己业务写的可6了

踩坑体验
最近我做了一个需求,就是在原有的订单业务上加上优惠券业务,本想着写一个优惠券优惠金额计算业务就行了,然后在订单业务流程中调用一下优惠券的接口层,就完事了。结果!!!让我大跌眼睛,一个简单计算订单的待支付金额,搞了好几个完全不同的业务流程,完全没有个了抽象的接口层,购物车下单一种,直接购买下单一种,活动商品下单一种,我TM心态炸了,额… 结果我把订单的待支付金额模块重构了,本来可能所花费的时间是“1”,结果我花了差不多“2.5”的时间才完成了需求。


当前业务代码反思
作为一个程序猿,都想优雅的处理问题,那怎么优雅的处理问题么,大家可以检查一下自己的代码,有多少是逻辑重复性代码,又有多少功能性代码和业务代码是紧紧耦合的;又有多少代码因为需求扩展,你是需要花费大量时间修改大量代码才完成的,而不是只需要专注扩展性业务,就能轻松完成。

优雅的代码怎么写,Spring怎么用?
怎么写一个扩展性特别好的API呢,既能兼容Spring项目,又能兼容SpringBoot项目呢,我想,如果你不读Spring源码,不了解Spring中设计模式,是不可能实现的。


本人体验
前一段时间,我一直专注于打游戏忘记了学习,我现在真的很后悔。目前的我发现自己要学习的东西太多了,目前时间完全不够用,尤其是疫情期间,我在家里打了三个月的游戏,自己什么收获也没有,生活中的经济压力、房贷压力,依旧是压力。但是上天不会再给我这样的机会,我知道。

恰恰相反,有些人却抓住了疫情这个机会,给自己充电,和我拉开的差距,我被远远的甩在后面。


这世界上没有任何东西是一层不变的,唯一不变的就是变本身
还有我最喜欢的索尼品牌,疫情对于同行的其他品牌来说,完全是逆境,对于他来说正好是一个契机,他发现了疫情人与人不能近距离的交流,快速的发展远程技术。

我觉得特别真实的一句话就是,这世界上没有任何东西是一层不变的,唯一不变的就是变本身。更何况是变化如此之快的互联网技术呢,所以我们不能靠着一点点浅薄的知识,混迹在这个圈子了,因为圈子里80%的人在进步。你的停不前,只会被踢出这个圈子。每年的面试要求越来越高就是最好的证明,不是么?

别再沉沦了,赶紧充实自己,让自己有权利选择公司,而不是在面试时候公司来挑你。

最后送大家一点干货
学习源码中画了张Spring源码的流程图,大家可以看一看或许能帮助到大家
地址:spring源码流程图,未完,持续更新中

备注:年前开始画的,最近太忙了,后面一定更新完!!!

你可能感兴趣的:(为什么要学习Spring源码,为什么要提高自己)