Spring学习笔记(前言)

制定模块(大纲)

以下为2019年8月1号Spring注解驱动系列的文章更新传送门(建议顺序阅读)

  • Spring源码解析之注解驱动的"发动机"
  • Spring手动挡装配Bean之Enable模式
  • 揭秘SpringBoot自动装配的魔法
  • SpringBoot自定义自动装配与Conditional失效问题

在这里推荐一本书《Spring源码深度解析》:在阅读Spring源码的过程中,我大量参考了Spring源码深度解析 这本书,这本书的脉络还不错,但毕竟是5年多前写的,开头第一章写的BeanFactory如今已被废弃,但还是值得一看,你需要了解的是它的思想,此书个人感觉还是有一点连贯性,建议读者顺序阅读。

  • 1. 深入源码分析SpringIOC
    • 第一章 IOC初始化之准备工作(定位、加载、注册)
    • 第二章 IOC之Bean的初始化(实例化与依赖注入)
    • 第三章 IOC扩展点之灵活运用Spring框架
    • 番外篇 IOC扩展点之自定义标签
  • 2. 深入源码分析SpringAOP实现原理
    • 第一章 深入源码分析SpringAOP
  • 3. 深入源码分析Spring声明式事务实现原理
    • 第一章 简介Spring事务与事务基本原理
    • 第二章 剖析事务增强器
    • 第三章 分析各个传播特性的场景
    • 第四章 实际场景演示各个传播特性对事务的影响
  • 4. 深入源码分析SpringMVC
    • 第一章 初识SpringMVC与其初始化
    • 第二章 深入分析SpringMVC请求处理过程

说点什么

     时间飞逝,距离我上次写2018下半年学习计划已经过了6个月,眼看还有半个多月2018下半年就过去了,但回头看看计划,发现还有大半没有学习到,很多知识点其实都是易学难精,例如我即将要写的这个Spring,如果只是会用的话相信只要几天时间就可以,但是你如果深究其原理,其实是一件很需要意志力并且时间的事。
我看源码的过程是一次兴趣使然,先看了Java类库的集合类源码,觉得特别有意思,能发现以前不知道的原理,更好理解了集合类比如Map、List,这种豁然开朗的感觉让我觉得很不错,后面因为公司需要用到shiro安全框架,我需要对其进行扩展,如果只是用的层面的话,你看看教程就可以了,但难的是扩展,我需要去阅读源码才可以对其进行扩展和改造,所以成为了我看Shiro框架源码的动力,刚开始我根本找不到入口,只能在网上找资料,一点一点地看,硬着头皮看下去,前期很枯燥乏味,但你看着看着就可以看出门路,然后很灵活的去改造它,这种成就感是很难比拟的,所以你需要找到看源码的乐趣,带着疑问去源码中找答案,如果被你找到了,相信我,这个时候你会觉得自己真是太牛逼了!经过Shiro框架源码的熏陶,我带着好奇心想把平时一直在用的ORM框架Mybatis的原理也扒的一干二净,所以前段时间刚写了一个系列是学习Mybatis源码,其中有我个人总结的阅读源码的一点小经验。
     回到正题,此篇Spring文章其实在我的学习计划里写了很久很久了,终于要实现它了,而为什么我拖了这么久,不是因为我有拖延症,是Spring真的太深了,耗费了我很多时间,半年前轻描淡写了6个字母IOCAOP,说着要写对他们的理解,殊不知,这6个字母其实蕴含着很深很深的意味,我花了好几个月的时间一直在摸索探究,看书找资料辅助,可以说,Spring是我看过的源码中,最复杂的那个,或许也是框架中最复杂的那个。Java类库的源码其实它只有那几个类,结构性不会太强,一般功能在几个类中就会写明白,但Spring的源码,底层封装了很多很多,往往你会觉得,走着走着发现不知道在哪了,Spring作为框架的框架,经过好多年的沉淀,代码的健壮性其实也沉淀了很久,虽然复杂,但有条理,在看Spring源码的过程中,理解了很多设计模式以及面向对象的思想,由于Spring源码深度很强,大部分方法都不是具体干事情的方法,如果你无法找到看源码的乐趣,没有好奇心,我觉得你可以就此放弃,只有真正热爱编程的人我觉得才可能去花很多时间阅读源码(暗示自己),而且需要一些意志力,有些时候你会觉得自己毫无头绪,会有部分地方怎么看都看不懂,花了很多时间做无用功,你需要坚持,可能很累,但你需要出去走走,散散步,然后再回来看,说不定你散步的过程中就会出现灵感(至少我这样出现了几次)。如果你对为什么要看源码还持有疑问,我觉得也别看源码了,你自己都觉得没有理由说服自己,最终只有放弃。
     回到正题,研究Spring源码的时间大大超乎我的想象,想要真正理解IOC、AOP,并不是我以前认为的那样,或许你认为看几篇精品博客,就会大致了解其中原理,但我说过,很多东西其实是易学难精的,你去看别人写的理解,永远只停留在皮毛,过个几天?几个月?我相信你就会忘记70%左右,作者字里行间的很多细节我认为你是注意不到的,所以,源码分析我认为只是“师傅引进门,修行靠个人”的一种说法,只是用来提点你的,真正教会你东西的是需要你自己去实践,自己动手去看,带着疑问去找答案,真正理解它你想忘都忘不掉。在这段学习Spring的时间里,我越学越 感到Spring的伟大之处,其实以前一直不理解,我以前认为IOC只是一个存放对象的容器,它有什么作用?只会说解耦,声明对象方便,不用写new,现在看来,我只是了解到Spring的冰山一角,所以,阅读Spring源码,你可以更深入地理解IOC,而不只停留在解耦,存放对象等等肤浅的认知上。
     在12月份,我将深入Spring源码分析IOC、AOP,但Spring的功能远不止这些,所以我还会写关于MVC,手写一个迷你Spring结合MVC功能,这是一个加深自己理解的好方法,真正动手去写它,你就能想作者所想,理解层面会更加深。

你可能感兴趣的:(spring)