2020年10月15日,本人有幸参与了掘金技术社区的一次直播活动,做为主讲人与小伙伴们分享了一些关于 Spring 方面的内容。此次分享的内容以概述为主,主要帮小伙伴们理清楚学习 Spring 的思路,以及学完 Spring 框架以后的进一步规划。react
写这篇文章,主要是记录一下当天分享的内容,以及一些后续的复盘等等,帮助没有遇上车的小伙伴们。git
【B站直播回放:www.bilibili.com/video/BV13i…】github
既然是聊 Spring ,那咱仍是要知道它的地位和份量。Spring 的地位想必都已经到 2020 年了,小伙伴们都很是的清楚。面试
在 Spring 的官方网站 spring.io 中,一上来咱们看到的就是 Spring 官方对 Spring 的描述:spring
Spring makes Java simple.modern.productive.reactive.cloud-ready.编程
Spring 使 Java 开发变得简单、现代化,而且能够编写生产级别的应用、响应式的应用,而且也支持云应用。json
包括下面主页上也列出了 Spring 能够作的内容:后端
可见,Spring 表明的不只仅是一个框架 / 一个技术,而是一整个生态。缓存
翻开 Spring 官网的工程概览 spring.io/projects ,咱们会发现里面的工程实在是好多好多呀!安全
最顶部的两个表明之做,分别是现阶段最最流行的后端服务搭建基本框架 SpringBoot ,以及它的基底 SpringFramework :
往下看,还有关于数据访问层的 SpringData 、用于解决微服务开发的总体解决方案 SpringCloud 、用于解决权限安全方面的 SpringSecurity 、用于解决 Session 外置的 SpringSession 等等,这些都是 Spring 生态中的一个个解决方案。
若是只是人家官方本身吹,那说服力很明显不是很足,咱看看主流的比较受欢迎的开源项目,它们都用了什么底层框架。
翻开码云的开源项目 gitee.com/explore/bac… ,观察这些比较受欢迎的后台管理系统都是用什么搭建的:
可见这些开源项目都是基于 Spring / SpringBoot 搭建的!这足够有说服力了吧,连这些主流的、受欢迎的项目都是用 Spring 搭建的,那就足以说明 Spring 真的足够的强大了。
最后一个点是关于面试,一直以来面试中就容易问到 Spring 这个框架,并且近年来难度有上升趋势,小伙伴们看如下几个问题都能回答多少呢:
这些问题,在 Spring 的小册,以及 SpringBoot 的小册中,都有相应的解答,小册总结的面试题不少,若是小伙伴们有在准备面试的话,小册会是你备战的一个坚实的依靠。
那既然 Spring 如此的重要,咱们应该如何全方面的去学习、掌握 Spring 这个框架呢?
简单的来说,咱们能够分为 4 个部分来学习:
IOC 的部分是整个 Spring 框架最强大,同时也是最复杂的部分,这里面包含的知识点实在是太多了,咱能够简单地罗列一下:
这些知识点,在 《从 0 开始深刻学习 Spring》的小册中,所有都会讲到,并且难度都是逐层递进的,包括其中涉及到的面试题总结等等。
Spring 的两大核心,除了 IOC 以外,另一个就是 AOP 了。咱都知道 AOP 的核心底层实现是动态代理,那它是怎么实现的,如何编写 AOP 的切面;以及 Spring 中对于 AOP 的一个实现:事务管理,它又是怎么使用的,如何编程式 / 声明式 / 配置式的添加事务,以及它的底层如何实现事务控制,这都是在 AOP 和事务部分要学习的。
这个部分的内容大概能够划分为以下内容:
大多数人都喜欢把 Spring 跟 SpringMVC 分开来讲,但确切的说,SpringMVC 是 Spring 框架的一部分,而且自打 Spring 5 出现以后,SpringMVC 多了一个孪生兄弟 SpringWebFlux ,因此 SpringMVC 也被称为 SpringWebMvc 了。
一样的,Web 模块中 Spring 也是重拳出击,这部份内容主要围绕如下的一些关键知识点来学习:
SpringWebFlux 由于用的人还不多,并且理解的难度相对很大,因此这里咱们只是提一下,若是小伙伴已经熟练掌握了 SpringWebMvc ,那能够试着学习一下 WebFlux 的东西。
若是只是由于 Spring 这个框架自己强大的话,还不足以在整个 JavaWeb 的开发界独占鳌头,它优秀且强大的整合第三方技术的能力绝对是不可或缺的一部分。一般来说咱们接触的比较多的、比较知名的技术,几乎都与 Spring 框架进行了整合。
这里面不乏包含咱熟悉的技术:
学习这些技术的时候,必定要记得顺便学习它与 Spring 的整合。
对于 Spring 框架的学习,做者能够提供两种思路:
两种方法思路任选其一,根据本身的学习风格、思惟和习惯来就好。
不止是学习 Spring ,学习其它框架 / 技术时,这两种思路一样适用。
Spring 框架学习完毕以后,接下来的规划也是相当重要的。明确本身目前所处的位置,并针对本身的状况制定中长期的规划,对本身的整个职业生涯的重要性不言而喻。做者在此也只是提一些导向性的建议,帮助小伙伴们理清本身。
回答:不须要。
缘由:对于初入职场的小伙伴,公司更看重的是你的基本功,基本功扎实,想必可塑性都不会差。因此,尽量的让你的基础知识掌握得更牢靠吧(JavaSE 、JavaWeb 、基本的框架等)。
回答:通常发生在后置处理器的初始化阶段。
原理:可参照小册第 34 章和第 48 章(后续更新)。
回答:可参考开源项目 learningjdk 。
回答:必须的。
缘由:兄dei,若是你连 HttpServletRequest 和 HttpServletResponse 都搞不明白,学 SpringBoot 开发 Web 场景的功能时,岂不就直接废了?Servlet 方面的知识是 JavaWeb 的基础,SpringWebMvc 是构建在 JavaWeb 之上的,SpringBoot 又是整合 SpringWebMvc 的,因此按照这个依赖关系,Servlet 固然是一个必学项啦,并且是基础的必学项。
回答:多写多用多练。
小伙伴们扪心自问一下,你一开始学习那些框架、知识等等的,发现有这样那样的高级知识,你学会了,哇塞我牛X了,我直接芜湖起飞了!但是,你真的有在实际场景下用过吗?对于咱搞开发的来说,知识不是学了就能记住的,必定要多加练习,这个学习没有捷径,你看到的熟练都是背后有大量付出的。
初次参与直播分享,前期准备的也比较有限,不免会出现有些地方的疏漏、或者交流不充分不到位的地方,敬请小伙伴们海涵和指正。小伙伴们能够经过加入掘金直播分享群找到我,或者经过邮箱 LinkedBear@163.com 与我联系。后续有机会的话,我也会继续参加咱掘金的直播,继续与各位小伙伴做有关 Spring 及生态相关的技术分享和交流。
最后,感谢各位小伙伴的捧场,也感谢掘金官方工做人员的辛勤付出,各位都辛苦啦!