普通新人后端有没有必要学习 Spring 源码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1oNflow
V2EX    Java

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

  •  
  •   1oNflow 2020-09-30 16:15:52 +08:00 via iPhone 8495 次点击
    这是一个创建于 1837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    完全没有任何必要
    Ho1iday
        7
    Ho1iday  
       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
    老板不关系你会不会源码 关心你能不能交付功能。
    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
    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 吗?(前端转的
    notejaa
        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     Solana     2696 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:43 PVG 15:43 LAX 00:43 JFK 03:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86