V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RedBeanIce
V2EX  ›  程序员

[求推荐] Spring 源码阅读相关

  •  
  •   RedBeanIce · 2020-03-20 15:16:05 +08:00 · 4072 次点击
    这是一个创建于 992 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人刚毕业工作一年萌新。

    求推荐 Spring 源码阅读相关书籍,或者学习路径。

    目前,数据结构良好手搓 AVL 树勉强可,设计模式不太熟练,只是知道水平。 业务水平也只是一般,对于 IOC AOP 处于勉强会用的水平,自定义注解等还是会用。

    求大佬们推荐 spring 源码阅读书籍,或者我目前不足以阅读源码,需要补充一些其他知识。

    提前谢谢大佬们。

    26 条回复    2022-08-01 14:08:55 +08:00
    fkdog
        1
    fkdog  
       2020-03-20 15:26:18 +08:00   ❤️ 2
    等你读完源码,估计会是 0 收获。spring 的源码经过 16 年的迭代,内部实际上已经是非常庞大了。里边很多代码甚至都是为了修复 bug 的。你一眼看过去甚至还会好奇这么写是为什么。

    所以最好的实践就是大致过一遍源码,了解一些核心模块的实现逻辑,细节性的东西就 pass,如果想自己去做框架,倒是可以借鉴一下一些细节的实现方法。

    spring 说白了就是一套开发框架而已,个人更喜欢把时间精力放到计算机基础、网络通信、jvm 底层相关的方面上去。
    RedBeanIce
        2
    RedBeanIce  
    OP
       2020-03-20 15:30:33 +08:00
    @fkdog 啊哈,,可能是我描述问题方式有问题,,
    lewis89
        3
    lewis89  
       2020-03-20 17:16:20 +08:00   ❤️ 1
    @RedBeanIce #2 https://github.com/jonwinters/tiny-spring

    基本同意楼上,Spring 作为工业级的代码,已经有十几年的历史了,里面细节很多,光是一大堆的 Util 就不知道给 Java 的反射 API 擦了多少屁股,你读了也没什么太多的卵用,如果是了解其设计思想跟模块,你看下我的 Fork 的代码就好了
    keshawnvan
        4
    keshawnvan  
       2020-03-20 18:05:17 +08:00   ❤️ 1
    推荐你看下《从零开始写 JavaWeb 框架》,会从零开始实现一个支持 IOC,AOP 的框架,写完对 Spring 的原理就有个大概的了解了。
    nortonlai
        5
    nortonlai  
       2020-03-20 18:49:14 +08:00 via Android   ❤️ 1
    对源码最深的印象就是类名方法名贼鸡儿长,严重占用了大脑的内存
    gz911122
        6
    gz911122  
       2020-03-20 18:56:13 +08:00   ❤️ 1
    阅读这玩意意义不大
    不如看看 java 下一代那些云原生框架
    ixx
        7
    ixx  
       2020-03-20 19:09:17 +08:00   ❤️ 1
    自荐一下 《造一个方形的轮子》 系列 https://github.com/iuv/square
    ufan0
        8
    ufan0  
       2020-03-20 19:14:50 +08:00 via Android   ❤️ 1
    我正在看的书籍是《 Spring 源码解析第二版》,书本+博客学习还行。

    数据结构要求不高,但是设计模式需要,熟知才能看得心里有数。
    RedBeanIce
        9
    RedBeanIce  
    OP
       2020-03-20 23:12:34 +08:00
    @lewis89 谢谢大佬的回复,我去看一下您的仓库
    RedBeanIce
        10
    RedBeanIce  
    OP
       2020-03-20 23:13:00 +08:00
    @keshawnvan 谢谢!!!我去看看 PDF,再看看是否有整个实体书
    RedBeanIce
        11
    RedBeanIce  
    OP
       2020-03-20 23:14:06 +08:00
    @ufan0 谢谢您的回复!!!!我去看看!!
    RedBeanIce
        12
    RedBeanIce  
    OP
       2020-03-20 23:14:26 +08:00
    @ufan0 谢谢您的回复!!!!我去看看!!!!
    RedBeanIce
        13
    RedBeanIce  
    OP
       2020-03-20 23:15:47 +08:00
    @nortonlai 就是想研究一下,最近不知道看什么。谢谢大佬的回复


    @gz911122 就是想研究一下,最近不知道看什么。感谢大佬的回复
    RedBeanIce
        14
    RedBeanIce  
    OP
       2020-03-20 23:16:13 +08:00
    @ixx 谢谢大佬的回复,我也去看看您的仓库。
    coer
        15
    coer  
       2020-03-21 02:06:22 +08:00 via Android
    可能是我太菜了,看 spring 源码解析那本书看着看着就看晕了,如果看不下去可以去 b 站找相关的视频
    Jooooooooo
        16
    Jooooooooo  
       2020-03-21 02:12:05 +08:00
    直接把 spring 理解成一个管理 bean 的容器, 然后把 bean 的加载过程搞明白就 OK 了

    不要投入太多时间放在这种工具上
    yeqizhang
        17
    yeqizhang  
       2020-03-21 02:46:18 +08:00 via Android
    意义不大,人生苦短,你弄懂了最多锻炼一下你的脑子,面试偶尔会问问,因为面试官百分之九十多都没深究过。现在都是问微服务各种中间件数据库优化之内的,呵呵,我严重怀疑他们也是看 github 上那些大厂的面试题来问的
    yeqizhang
        18
    yeqizhang  
       2020-03-21 02:57:22 +08:00 via Android
    不过还是可以看看里面的经典设计模式,设计模式实用。
    securityCoding
        19
    securityCoding  
       2020-03-21 10:50:10 +08:00
    spring 源码分析这书挺好的 , 学习工具原理你至少得用熟悉它再去了解原理
    aguesuka
        20
    aguesuka  
       2020-03-21 12:17:27 +08:00 via Android
    一个轻量级的注入框架不到 500 行,可以自己写一个。大部分项目只用到 spring 很小一部分功能
    tiankongzhe
        21
    tiankongzhe  
       2020-03-25 11:15:38 +08:00
    自己的经验,直接看 springboot 代码,你可以看 spring boot1 版本的,因为 springboot2 部分使用 lambda 可读性差些。看源码一定要 debug,只看是学不到深层的东西的,一定要自己 debug,一定要自己 debug 。有一定熟悉度之后,方式就可以灵活些了。如果需要可以详细聊下
    jeesk
        22
    jeesk  
       234 天前 via Android   ❤️ 1
    我以前关注过一个公众号, 说是要读就从 spring 0.9 开始读, 当时我觉得他是垃圾。 两年后过去了,我觉得他很牛,现在才知道别人是在 oracle 和 ibm 呆过的大神。 因为 spring 就是 管理和创建 bean ,依赖注入 解决依赖循环, 其它的无非是 spring 的拓展。 我第一个框架阅读是的 google juice 的源码,第一个版本只有 20 个类, 我 debug 了一天才看懂基本原理。 又用了一天,看看懂了设计模式, 现在想想要是大牛早点说服我,我至少进步好几年。spring 无非也是这样, 第一个版本的 beanfactory 现在还在用, 所以你把 spring 0.9 的源码读了, 再去循序渐进的看 spring 5.0 的源码就简单多了。 因为原理你在 0.9 就知道了,其它的无非就是拓展。
    jeesk
        23
    jeesk  
       234 天前 via Android
    如果你真的要看源码直接上 spring 1.0 ,1.0 版本提供了测试用例。 不过编译用的 ant , 自己填坑要花点时间, 还要下载 jdk1.4 ,自己处理一下编译问题,2 个月后你对 spring 的认识超越同一工作年龄 99%的同事了。 吊打面试官 根本不是问题。
    RedBeanIce
        24
    RedBeanIce  
    OP
       131 天前
    @jeesk 1.0 以及 ant 果然是麻烦啊,,ant 玩不转。。。
    jeesk
        25
    jeesk  
       129 天前
    @RedBeanIce 为啥要用 ant ? tomcat 的源码才是 ant .
    RedBeanIce
        26
    RedBeanIce  
    OP
       129 天前
    @RedBeanIce spring1.0.......
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   5007 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 06:26 · PVG 14:26 · LAX 22:26 · JFK 01:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.