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

普通新人后端有没有必要学习 Spring 源码?

  •  
  •   1oNflow · 2020-09-30 16:15:52 +08:00 via iPhone · 7901 次点击
    这是一个创建于 1499 天前的主题,其中的信息可能已经有所发展或是发生改变。
    40 条回复    2020-10-01 19:11:09 +08:00
    tctc4869
        1
    tctc4869  
       2020-09-30 16:22:20 +08:00
    你目前需要学习 Spring 源码么?为什么需要?谁告诉你必须要学 Spring 源码的?不学有什么问题么?

    Spring 只是个工具
    lewis89
        2
    lewis89  
       2020-09-30 16:25:18 +08:00
    看看 spring-context spring-core spring-aop spring-tx 就行了
    huifer
        3
    huifer  
       2020-09-30 16:37:14 +08:00
    想看就看多学肯定没问题 (其实只是想推广一下 https://www.yuque.com/huifer/spring)
    chendy
        4
    chendy  
       2020-09-30 16:38:08 +08:00
    可能有必要通读 spring 的文档
    reeco
        5
    reeco  
       2020-09-30 16:57:45 +08:00 via Android
    没必要
    xianyuya
        6
    xianyuya  
       2020-09-30 17:12:09 +08:00
    完全没有任何必要
    egoistttt
        7
    egoistttt  
       2020-09-30 17:18:30 +08:00
    没有必要看源码,知道并理解原理就行了
    lewis89
        8
    lewis89  
       2020-09-30 17:18:35 +08:00   ❤️ 1
    @xianyuya #6
    @reeco #5
    老哥 还是别误人子弟的好,Java 这块 Spring 绕不过去的,你要进一步做组件开发,对 Spring 内部源码多多少少了解一点不会有害处的,除非你只想写业务代码
    wysnylc
        9
    wysnylc  
       2020-09-30 17:20:55 +08:00
    记住看源码是学习效率最低的方式,要看就看其他人的博客讲解
    lewis89
        10
    lewis89  
       2020-09-30 17:25:26 +08:00
    如果你想为 CRUD 节省时间,或者以后做一些 Spring 组件的开发,
    最好通读一下 Spring 几个核心模块的代码并了解其中其中的原理,大部分 Utils 跟 Bean 装配的代码不必须要细读,
    因为其中很多拐弯抹角的 Spring 代码是擦了不少 Java 遗留的屁股。

    https://github.com/jonwinters/auto-generate-enum-api-parent

    我最近开发的一个组件,就因为当时不是很清晰 Spring 的整体流程 没注意细看文档,坑了好长的时间
    在 processBeanDefinitions 阶段,spring 容器并未为 bean 做 property 注入的处理,你可以看到我并没有使用
    @ConfigurationProperties 包装的 Bean 而是手动注入了 Environment 然后 get 到环境配置的变量
    Nuttertoo1s
        11
    Nuttertoo1s  
       2020-09-30 17:25:35 +08:00
    一开始我觉得没必要,直接去学 spring boot,发现还是需要学习一下 spring 方便辅助了解 spring boot 。
    sagaxu
        12
    sagaxu  
       2020-09-30 17:26:13 +08:00 via Android
    个人觉得啃 spring 源码一点用都没有,但是准备面试的话不妨看看
    gaocc
        13
    gaocc  
       2020-09-30 17:45:37 +08:00
    刻意去看,个人感觉也是今天看,明天忘。最好是开发都时候,有意识的去瞅瞅,源码怎么走的,留个印象就好。真遇到问题,方便入手
    frankkai
        14
    frankkai  
       2020-09-30 17:45:43 +08:00
    老板不关系你会不会源码 关心你能不能交付功能。
    x940727
        15
    x940727  
       2020-09-30 17:51:41 +08:00
    @lewis89 讲道理,Spring 是工具,看源码也是为了学会怎么在实际开发中使用设计模式,至于现在大部分人所谓的看源码,都是为了看而看,说白了就是拿来面试。
    lewis89
        16
    lewis89  
       2020-09-30 18:00:38 +08:00
    @x940727 #15 看做什么吧,如果你只是 写 CRUD 的,说实话真没必要去看源码,我平时工作也用不上,但是你真要做一些组件开发,了解怎么减少代码编写,或者做一些中间件去 支撑业务 监控性能 或者资源权限的东西,不懂框架原理没阅读过源码 真的不行。
    lewis89
        17
    lewis89  
       2020-09-30 18:05:04 +08:00
    @x940727 #15 因为 Java 本身动态性并不够,像 Python 其实语言自带了很多魔改功能,可以直接自己修改自己,可以在运行时做很多东西 来减少手工重复代码编写,但是 Java 这块 对代码增强 或者具体点说是 AOP 相关的技术 都是通过 Spring 来实现的,你如果没有 Spring 想自己完成一套 切面简易的鉴权系统 十分困难,除非你每个 Java 调用的方法都手工去复制一遍代码,不然最终还是绕不开 AspectJ CgLib Javassit Spring 这些技术。
    wangkun025
        18
    wangkun025  
       2020-09-30 18:12:42 +08:00
    我觉得没必要。
    git00ll
        19
    git00ll  
       2020-09-30 18:28:29 +08:00
    普通新人后端有没有必要学习 Spring 源码?
    -----------------------------------------------------
    新人没必要,毕竟把 spring 全家桶的用法学会也要很长时间,
    一两年后肯定是要看的,不看 spring 也要看其他的框架的,目的是提高读源码能力。
    hcx0
        20
    hcx0  
       2020-09-30 21:03:10 +08:00   ❤️ 1
    非常又必要
    首先,Spring 中有很多优秀得设计,多学习有好处。其次,Spring 甚至已经成为事实上的标准,了解 Spring 本身的设计可以帮助你减少很多不必要的操作、以及避免很多会恶心同事的操作。
    misaka19000
        21
    misaka19000  
       2020-09-30 21:08:04 +08:00
    没必要
    mtmax
        22
    mtmax  
       2020-09-30 21:36:40 +08:00
    没必要 说必要的先想想你 jdk 源码看多少了 哪个重要不用我多说了吧
    IGJacklove
        23
    IGJacklove  
       2020-09-30 23:49:43 +08:00 via Android
    @egoistttt 不看怎么了解?看源码才是了解原理最好最有用的方法,像那些看别人博客总结的很多都是半桶水,知其然不知所以然,稍微问的深一点就都答不上来了。
    anguiao
        24
    anguiao  
       2020-10-01 00:21:28 +08:00 via Android
    很多人连文档都没仔细看,就跑去看源码(不特指 Spring )。然后各种“手撕源码”的水文,也是层出不穷。
    其实很多人并不真的需要看源码,只是为了面试的时候能吹上几句。谁让现在的面试都喜欢问有没有看过源码呢?
    amiwrong123
        25
    amiwrong123  
       2020-10-01 00:49:09 +08:00 via Android
    借楼问下各位,为了面试的话,spring 的源码应该重点了解那些方面?比如 ioc 的依赖注入,aop 如何切面。
    或者说,应该带着哪些问题(可能是面试会问到的问题)去看源码?
    ycbb123
        26
    ycbb123  
       2020-10-01 08:51:08 +08:00
    很多人文档都没看过
    yiyi11
        27
    yiyi11  
       2020-10-01 09:57:53 +08:00 via Android
    所谓 java 框架,无非就是 反射 + 正则 + 设计模式,spring 亦如此,你可以先从这些知识点入手。

    至于源码,你直接看肯定一头雾水,因为代码版本到今天已经非常庞大,要有目的性去看(比如看一些源码分析的教程),取其核心。
    yanguango
        28
    yanguango  
       2020-10-01 10:09:12 +08:00 via Android
    厚着脸皮提一下,有个工具帮助你阅读源码。https://wonder.codes
    sunwei0325
        29
    sunwei0325  
       2020-10-01 10:12:22 +08:00
    你就想象, 开车是不是也要研究明白发动机原理
    Cyron
        30
    Cyron  
       2020-10-01 10:26:12 +08:00 via iPhone
    黑盒就先用,用熟练了再慢慢深入
    qwzhang01
        31
    qwzhang01  
       2020-10-01 11:15:06 +08:00
    有一定必要,面试非常有必要,后期自己开发中遇到坑填坑帮助也非常大。但是不能死磕,看文档,看比较好的博客,理解设计模式,然后找一个细小的点,debug 进去慢慢看,做的时间久了,自然久明白了。
    qwzhang01
        32
    qwzhang01  
       2020-10-01 11:16:47 +08:00
    @sunwei0325 这样理解好像也不准确,造车的工程师和司机的技能树差别有多大,用 Spring 写项目的和写了 Spring 的程序员技能树差别呢!!!
    inwar
        33
    inwar  
       2020-10-01 11:30:58 +08:00 via Android
    Spring mvc 要看,spring 可以了解一点,不然遇到问题就捉瞎
    bojue
        34
    bojue  
       2020-10-01 11:33:32 +08:00 via iPhone
    @lewis89
    br00k
        35
    br00k  
       2020-10-01 11:43:30 +08:00 via iPhone
    可以先把使用文档看了,实践了。再深入的时候可以从源码学习。
    aguesuka
        36
    aguesuka  
       2020-10-01 12:45:58 +08:00 via Android
    如果你能熟练使用 spring,对软件设计有一定见解,能实现一个乞丐版的 inject 和 mvc 框架,不妨一试
    Zchary
        37
    Zchary  
       2020-10-01 16:00:00 +08:00 via iPhone
    我想问新人后端有必要学 Java 吗?(前端转的
    notejava
        38
    notejava  
       2020-10-01 17:11:00 +08:00
    没必要刻意去看,带着开发中遇到的问题去阅读源码就可以了。
    lionseun
        39
    lionseun  
       2020-10-01 17:57:28 +08:00 via Android
    源码论者占据了高薪行业,10K 工资不需要,其他看情况
    clf
        40
    clf  
       2020-10-01 19:11:09 +08:00
    更多的是了解框架的思想吧,比如 AOP 和 IOC 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5692 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:52 · PVG 09:52 · LAX 17:52 · JFK 20:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.