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

Spring 到底要怎么入门?

  •  
  •   x97bgt · 2019-05-13 15:24:56 +08:00 via iPhone · 6059 次点击
    这是一个创建于 2055 天前的主题,其中的信息可能已经有所发展或是发生改变。

    交叉看了一个月的《 Sring 实战》和《精通 Spring 4.x 》,依赖注入和切面的概念大致能理解了,但对 DAO、持久化这些看得迷迷糊糊的。

    更严重的是,完全没有一个全局上的了解。可能或多或少地知道对象、配置是怎么得到的,改改老代码还凑合着,但如果要我从零写一个 Demo,那完全不行了。

    可能是刚开始做程序员,以前没接触过类似的框架,术语一下子涌来实在太晕了。大家都是怎么入门的?

    42 条回复    2019-05-22 14:36:49 +08:00
    Caballarii
        1
    Caballarii  
       2019-05-13 15:28:22 +08:00   ❤️ 1
    先动手再说
    abcbuzhiming
        2
    abcbuzhiming  
       2019-05-13 15:35:30 +08:00   ❤️ 1
    动手,不会从零写 demo ?网上大把例子,你照着抄,把每个环节都搞懂是什么功能,你就入门了,spring 如果不深究原理的话,说到底就是个胶水
    vincel
        3
    vincel  
       2019-05-13 15:36:51 +08:00
    技术类真的要动手,在实际应用中解决问题才能学到东西
    murmur
        4
    murmur  
       2019-05-13 15:39:31 +08:00
    先抄配置 把你的业务跑起来 再去问为什么
    gz911122
        5
    gz911122  
       2019-05-13 15:45:48 +08:00
    spring 就是一坨 xxxx

    你就先凑合用着就行了
    x97bgt
        6
    x97bgt  
    OP
       2019-05-13 15:51:39 +08:00 via iPhone
    @Caballarii #1 @abcbuzhiming #2 @vincel #3 @murmur #4 @gz911122 #5 大佬们有什么推荐的书或教程么?还是就直接网上搜文章来实践?
    libook
        7
    libook  
       2019-05-13 15:52:55 +08:00   ❤️ 4
    Spring 是一个框架,而框架是被设计出来解决特定应用场景上的需求和问题的,如果不了解需求和问题上来就学框架,肯定就会感觉没有头绪。

    自己了解到的是 Sprint 的初衷是降低 Java EE 的使用难度,而 Java EE 是为各种企业级应用场景(最常见的是 Web )提供了各种现成的 API,这些 API 自己用 Java SE 写成本很高,而且相比来说 Java EE 更标准化、社区更成熟,所以往往人们都是直接用 Java EE 的接口。

    不知道你是否学明白 Java SE 了,如果学明白了可以自己尝试用 Java 核心 API 写一些简单的 Web 接口,体会一下哪些工作其实是可以用 Java EE 的接口来实现的;然后再使用 Java EE 写一些简单的 Web 接口,体会一下 Spring 是如何降低 Java EE 的使用难度的;最后再了解一下业内的一些企业级服务在开发过程遇到的一些问题是靠着 Spring 提供的哪些思想或者基于 Spring 的哪些思想来解决的。理解了需求和解决问题的思路应该就能更快掌握这个框架。

    当然 Java EE 很重,Spring 一方面要应对 Java EE,另一方面要给这么多年来的各种各样企业级服务提供解决方案,所以 Spring 也会很重,涉及到的思想和方案也会很多,学起来也就很花时间。

    我自己学 Spring 当年是直接放弃了的。。。所以我对 Java 技术栈的了解可能并不准确。
    这些年都是用其他语言的轻框架来做 Web,但不管什么语言什么框架,肯定都是用于解决特定的问题而不是用来制造麻烦的。
    WEBUG
        8
    WEBUG  
       2019-05-13 15:53:31 +08:00 via Android   ❤️ 1
    建议 spring boot
    NoKey
        9
    NoKey  
       2019-05-13 15:55:58 +08:00
    找个后端程序员,让他在没有网络,没有原来代码,只提供需要的 jar 给他的情况下,让他写一个完整的 spring 工程,你看看有多少人会的😄
    有些东西实际上不必纠结,善用就行了
    javaWeber
        10
    javaWeber  
       2019-05-13 16:05:23 +08:00   ❤️ 1
    你照着下面这个搭一遍框架。然后在看看书,就能入门了。
    https://blog.csdn.net/gebitan505/article/details/44455235/
    murmur
        11
    murmur  
       2019-05-13 16:19:18 +08:00
    @x97bgt 如果你是 spring 的话就去下 springside 项目先做起来再问为什么 这套框架全手动配置会吐血的
    springboot 我认为简单多了
    brust
        12
    brust  
       2019-05-13 16:54:46 +08:00
    自从用了 springboot 后 spring 我就只能看懂配置了
    qwingmix
        13
    qwingmix  
       2019-05-13 16:57:05 +08:00   ❤️ 1
    尚硅谷有一个视频教程,SSM 高级整合视频。 跟踪做一个件超级简易的人事管理系统, 其实就是一个页面, 有了 CRUD 的功能。 老师讲得很不错,跟着来敲 ,可以把 SSM 的整个东西跑通。
    t2doo
        14
    t2doo  
       2019-05-13 16:59:32 +08:00
    像 SpringBoot 这种框架,做一个带前台带后台的小型管理网站一般要多久,一个人的话
    qwerthhusn
        15
    qwerthhusn  
       2019-05-13 17:02:05 +08:00   ❤️ 1
    用多了就慢慢理解了(当然前提是用的过程中去多思考,不思考的话,用 100 年也是不懂)。我当初也是直接拿一本 Spring 的书从头看到尾,但是最后发现,不实际应用的话,根本没有啥理解。
    Spring Boot 把所有的细节给隐藏了,如果开始就用 Boot 的话,会让你对 Spring 的核心概念更加不感知,还是开始手动配 XML 或者手动写 @Configuration 好一点
    cllvking
        16
    cllvking  
       2019-05-13 17:22:18 +08:00
    新建一个项目,然后往里面填东西,一边学一边动手写代码会比较容易入门、有意思并且也有成就感
    Heavytiger
        17
    Heavytiger  
       2019-05-13 17:24:52 +08:00
    直接上 spring boot。
    x97bgt
        18
    x97bgt  
    OP
       2019-05-13 17:25:48 +08:00 via iPhone
    @libook #7 确实,说得有理。我觉得因为是 Spring 太大了,然后很多教材都是局限在一个很抽象的点在讲,没有前因后果,所以看起来太晕了。也可能 Spring 本身就是实践为主的,但现在市场上还是缺乏好的教材啊。
    yidinghe
        19
    yidinghe  
       2019-05-13 17:28:10 +08:00
    Spring 的核心是 IoC 容器这自不必说,关于该容器只要掌握两个阶段就可以了,一是初始化阶段,如何扫描 bean 的定义,组装 bean 的实例,以及在这个基础上衍生出来的延迟初始化、自动配置等等;二是执行阶段,如何从 IoC 容器中找到需要的 bean 对象,如何通过代理来拦截调用、实施切面。其余所有的细节都在这两个阶段当中,Spring 整个生态系统的框架都是这两个阶段配合实现的。
    taaaang
        20
    taaaang  
       2019-05-13 17:31:28 +08:00
    文档最前面就是一个 demo 吧,demo 跑起来就可以开干了
    BCy66drFCvk1Ou87
        21
    BCy66drFCvk1Ou87  
       2019-05-13 17:34:22 +08:00 via Android
    Spring 这玩意太庞大了……如果不是为了学习而学习去深究它产出不大,可以学它的几个主要的 project:spring boot、spring cloud 和 spring security 等
    lawliet233
        22
    lawliet233  
       2019-05-13 17:34:49 +08:00 via Android
    先撸代码,在看原理,这样才能通透
    2kCS5c0b0ITXE5k2
        23
    2kCS5c0b0ITXE5k2  
       2019-05-13 17:54:14 +08:00
    先跟着网上视频写项目啊... 写完一章再回来看原理
    aa6563679
        24
    aa6563679  
       2019-05-13 18:01:39 +08:00 via iPhone
    dao 持久化这些都是属于工具类了,不是必须要用的。
    txtxdog
        25
    txtxdog  
       2019-05-13 18:12:36 +08:00 via Android
    推荐自上而下,从 spring boot 开始
    cway
        26
    cway  
       2019-05-13 18:16:11 +08:00
    ctrl+c
    ctrl+v
    即可
    razertory
        27
    razertory  
       2019-05-13 18:22:40 +08:00
    说实在的,出现这个玩意儿就是因为 「 Java 没有考虑到如何降低大型工程的复杂度」它的核心功能就是 「 Java 语言的布丁」。已放弃,转 Go 和 Scala
    aidoudou
        28
    aidoudou  
       2019-05-13 18:43:15 +08:00
    多用就好了,,现在就是个全家桶,用到啥研究啥就好了
    xiaowei0823
        29
    xiaowei0823  
       2019-05-13 18:49:26 +08:00 via iPhone
    虽然用了一年的 Spring boot,但是你要问我什么是切面什么是 DAO 我也说不清楚 @_@
    Laodaige
        30
    Laodaige  
       2019-05-13 18:52:56 +08:00
    impl
        31
    impl  
       2019-05-13 18:59:46 +08:00 via Android
    学不动,从入门到放弃,建议直接放弃
    yclooer
        32
    yclooer  
       2019-05-13 19:08:37 +08:00 via Android
    能用 spring 全家桶实现一个需求就算是入门了
    orm
        33
    orm  
       2019-05-13 21:27:42 +08:00 via iPhone
    学 vert.x 吧
    DRcoding
        34
    DRcoding  
       2019-05-13 21:46:12 +08:00
    自从用了封装的更加的更加严实的 spring boot,虽然相当方便,但是更加感觉到自己只是用一用"工具"的码农了。。。
    PDX
        35
    PDX  
       2019-05-13 21:49:03 +08:00 via iPhone
    学 vertx 吧,特别妙
    x97bgt
        36
    x97bgt  
    OP
       2019-05-13 22:20:47 +08:00 via iPhone
    @PDX #35 @orm #33 公司项目用的 Spring,没办法必须学
    x97bgt
        37
    x97bgt  
    OP
       2019-05-13 22:21:13 +08:00 via iPhone
    @Laodaige #30 怎么 page not found
    lijbgo
        38
    lijbgo  
       2019-05-13 23:36:22 +08:00
    #37 这种情况,先去掉后面项目,进入个人主页,你就会发现
    micean
        39
    micean  
       2019-05-14 00:43:46 +08:00
    前段时间用 spring 配了个 OAuth2,想加点需求,然后看源码看懵了……
    最后自己看 OAuth2 协议撸个新 Server
    jzmws
        40
    jzmws  
       2019-05-14 08:53:20 +08:00
    下个 demo 先跑起来 ,然后再去找为什么这样子
    Laodaige
        41
    Laodaige  
       2019-05-15 12:29:26 +08:00
    jack80342
        42
    jack80342  
       2019-05-22 14:36:49 +08:00
    这是我翻译的 Spring Boot Reference Guide 2.0.0.RELEASE 的文档,你可以看看😀。https://github.com/jack80342/Spring-Boot-Reference-Guide
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3717 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 10:18 · PVG 18:18 · LAX 02:18 · JFK 05:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.