毋庸置疑,Spring 早已成为 Java 后端开发事实上的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分 Java 后端程序员在日常工作中也会接触到 Spring ,在使用的过程中不知道你是否遇到这些问题:
从 2002 年误打误撞开始写 Java 后,就把这门语言当做自己的主要工作语言了,一路上踩过不少坑,因此深有感触,还记得前些年 Spring Boot 和 Spring Cloud 还没有出现,我们在开发一个互联网金融相关的项目,大致要求如下:
一连串的需求如潮水般涌来,要命的是留给我们的时间还特别紧张,当时的内心还是有些小崩溃的,后来平复了一下心情,除了那些基本的功能性需求,还梳理了那些非功能性的点:
长长的清单一眼望不到尽头,更要命的是产品经理和老板在提需求时基本不会和你说这些,但在出问题时,没考虑到这些点,锅都是你的,谁让你是专业人士呢。
大厂有丰富的基础设施,能帮助业务实现很多非功能性需求,但如果是小公司,技术积累不多,那就只能靠加班加点堆积代码来实现,没给自己少埋坑,比如把开关做在数据库里,每次判断都 SELECT 一下,流量一大数据库就扛不住了;配置文件一多就乱套了,测试的配置一不小心就带上线了……
直到后面出现了 Spring Boot 和 Spring Cloud,只需引入一些 Starter Dependency,简单修改一些配置文件,再通过很少量的代码就可以实现上述需求,它们可以帮助工程师更好地基于 Spring 及各种基础设施来快速搭建系统,可以说,它们的诞生又一次解放了大家的生产力。
所以,Spring Boot 和 Spring Cloud 已成为 Spring 生态中不可或缺的一环。想成为一名合格的 Java 后端工程师,Spring Framework、Spring Boot、Spring Cloud 这三者必须都牢牢掌握。
在十几年前,我刚接触 Spring 时,国内基本没什么好的材料介绍它,更不要说什么像样的图书课程了,我和朋友们一起在满江红翻译了 Spring Framework 2.0 和 2.5 的文档发布在网上,希望通过完整的中文文档帮助大家更好地了解和使用 Spring。
到了 3.0 时我们就不再组织翻译了,原因是中文世界里已经有很多帮助大家学习 Spring 的东西了,无论是网上的文章还是线下的图书,大家也都已经把使用 Spring 做为工作中的常态了。既然它已如此普遍,那为什么还要再去专门做一门课程呢?
后来我调研了一下,市面上有很多书和教程,但对于很多开发人员,在学习 Spring 的时候,难免会遇到这些问题:
除此之外,很少有人会在文章或教程里去讲述框架扩展定制等相关的东西,而我在工作中则经常需要去考虑怎么让框架更好地为业务落地去服务,我也希望能把自己的经验传递给更多的工程师。
原理和实战相辅相成是本课程的一大特色,整个学习周期你将跟随我搭建一个线上咖啡馆的实战项目,通过实战把所有零碎的知识点串联起来,通过即学即用的方式,让你把知识点掌握得更牢固,理解得更透彻。
不同于市面上大多数教程,我希望不仅带给你 Spring Framework、Spring Boot 与 Spring Cloud 的实战技巧,更让你了解这些工具背后的关键机制与实现原理,真正做到活学活用。
我是丁雪丰,喜欢写程序,也是《Spring Boot 实战》与《Spring 攻略》的译者,目前就职于平安壹钱包,之前也在百度和阿里工作过。期间写过业务代码,做过中间件,干过运维,也搞过系统架构,对 Spring 全家桶产品进行过各种封装与定制,也正因为这样的工作经历,我可以从不同的角度认识和深入理解这些框架。
在这门课程中,我也会把自己这些年积累的第一手经验毫无保留地分享给大家。
1. 通过经验学习,提升实战技巧
课程中会有很多关于“怎么用”的说明,比如:
不仅会用,还得用的爽,那些能提升开发效率的框架、工具都在我们的课程涉猎范围之内。
在讲明白“怎么用”的同时,我也希望能帮助大家解决遇到问题时的“怎么办”,比如:
在掌握了“怎么用”,了解了“怎么办”之后,在实际工作中就可以做到从容应对。
2. 通过原理剖析,加深理解认识
一旦了解了它的原理,自然在遇到问题时就能有新的思路,“怎么做”的灵光乍现也得在日常有所积累。
不仅能知其然,还要能知其所以然,融会贯通后再运用到工作中去,让 Spring 真正为你所用。
3. 通过案例实践,巩固学习效果
课程以实战为主,全程贯穿一个咖啡馆的系统—SpringBucks,包含了下单、制作、派送的步骤,随着课程的推进会不断丰满,通过 Spring Framework、Spring Boot 和 Spring Cloud 打造一个完整的系统,麻雀虽小五脏俱全,将课程涉及的大部分内容结合起来,并部署到云上。
在学习过程中,无论你碰到什么问题,都可以通过留言与我互动,我会及时回复大家的问题,并根据大家的反馈,对后续的课程内容进行相应的补充和调整。
https://gitee.com/geektime-geekbang/geektime-spring-family
作者回复: 谢谢,我觉得书和本课程并不冲突,可以互相结合。在课程中我并不会覆盖Spring所有的内容,毕竟现在Spring已经很庞大了,我只会涉及最常用的那些功能,20/80法则到哪里都适用。在一些我觉得有趣的地方,我也会结合我自己的一些经验做展开,我个人认为展开的地方才是课程的价值所在。
作者回复: 多谢支持
作者回复: 新版本的Spring没有完整的中文文档,就不用费力找了
编辑回复: 有的,time.geekbang.org,专栏介绍页面有写
作者回复: 可以看一下课程的课程信息最下面,在有提到的基础后,学习这个课程,收获会更大些。另外,如果是Spring的初学者,我个人建议最好再看些其他的资料做交叉学习,效果也许更好
作者回复: 你的目标是很不错的,不过只靠学习这个专栏是达不到你要的精通的,这还需要去了解很多东西,做很多的实践。
作者回复: 不只是数据库操作,我们在文字里列出了不少需要提前学习的知识点,建议都先看一下。至于学习的效果,我觉得因人而异吧,如果只是靠看和听,那也就是了解个大概吧,自己还是要花时间跟着课程去实践的。
作者回复: 前半段课程Spring Boot 2.1.4(Spring对应是5.1.6),后面正好出2.1.5(Spring对应是5.1.7)了,就顺手升级了。Spring Cloud用的是Greenwich SR1。
作者回复: 在课程大纲里我们有专门一部分讲SpringCloud的
作者回复: 的确是有些代码放到目前的版本最新版本上跑不起来,需要注意下版本号。大体上的思想和内容还是可以作为入门材料了解一下的,细节上需要注意下。