V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
RedBeanIce
V2EX  ›  程序员

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

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

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

    求推荐 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  
       2022-04-17 23:53:40 +08:00 via Android   ❤️ 2
    我以前关注过一个公众号, 说是要读就从 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  
       2022-04-18 00:24:33 +08:00 via Android
    如果你真的要看源码直接上 spring 1.0 ,1.0 版本提供了测试用例。 不过编译用的 ant , 自己填坑要花点时间, 还要下载 jdk1.4 ,自己处理一下编译问题,2 个月后你对 spring 的认识超越同一工作年龄 99%的同事了。 吊打面试官 根本不是问题。
    RedBeanIce
        24
    RedBeanIce  
    OP
       2022-07-29 21:19:30 +08:00
    @jeesk 1.0 以及 ant 果然是麻烦啊,,ant 玩不转。。。
    jeesk
        25
    jeesk  
       2022-08-01 09:45:17 +08:00
    @RedBeanIce 为啥要用 ant ? tomcat 的源码才是 ant .
    RedBeanIce
        26
    RedBeanIce  
    OP
       2022-08-01 14:08:55 +08:00
    @RedBeanIce spring1.0.......
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2759 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:42 · PVG 11:42 · LAX 19:42 · JFK 22:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.