玩转 Spring 全家桶
丁雪丰
美团研究员,《Spring Boot 实战》、《Spring 攻略》译者,腾讯云 TVP。
97978 人已学习
新⼈⾸单¥68
课程目录
已完结/共 123 讲
第十一章:Spring Cloud及Cloud Native概述 (5讲)
玩转 Spring 全家桶
登录|注册
留言
89
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 01 | Spring课程介绍
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Spring课程介绍
02 | 一起认识Spring家族的主要成员
03 | 跟着Spring了解技术趋势
04 | 编写你的第一个Spring程序
05 | 如何配置单数据源
06 | 如何配置多数据源
07 | 那些好用的连接池们:HikariCP
08 | 那些好用的连接池们:Alibaba Druid
09 | 如何通过Spring JDBC访问数据库
10 | 什么是Spring的事务抽象(上)
11 | 什么是Spring的事务抽象(下)
12 | 了解Spring的JDBC异常抽象
13 | 课程答疑(上)
14 | 课程答疑(下)
15 | 认识Spring Data JPA
16 | 定义JPA的实体对象
17 | 开始我们的线上咖啡馆实战项目:SpringBucks
18 | 通过Spring Data JPA操作数据库
19 | Spring Data JPA的Repository是怎么从接口变成Bean的
20 | 通过MyBatis操作数据库
21 | 让MyBatis更好用的那些工具:MyBatis Generator
22 | 让MyBatis更好用的那些工具:MyBatis PageHelper
23 | SpringBucks实战项目进度小结
24 | 通过Docker辅助开发
25 | 在Spring中访问MongoDB
26 | 在Spring中访问Redis
27 | Redis的哨兵与集群模式
28 | 了解Spring的缓存抽象
29 | Redis在Spring中的其他用法
30 | SpringBucks实战项目进度小结
31 | Project Reactor介绍(上)
32 | Project Reactor介绍(下)
33 | 通过Reactive的方式访问Redis
34 | 通过Reactive的方式访问MongoDB
35 | 通过Reactive的方式访问RDBMS
36 | 通过AOP打印数据访问层的摘要(上)
37 | 通过AOP打印数据访问层的摘要(下)
38 | SpringBucks实战项目进度小结
39 | 编写第一个Spring MVC Controller
40 | 理解Spring的应用上下文
41 | 理解请求的处理机制
42 | 如何定义处理方法(上)
43 | 如何定义处理方法(下)
44 | Spring MVC中的视图解析机制(上)
45 | Spring MVC中的视图解析机制(下)
46 | Spring MVC中的常用视图(上)
47 | Spring MVC中的常用视图(下)
48 | 静态资源与缓存
49 | Spring MVC中的异常处理机制
50 | 了解Spring MVC的切入点
51 | SpringBucks实战项目进度小结
52 | 课程答疑
53 | 通过RestTemplate访问Web资源
54 | RestTemplate的高阶用法
55 | 简单定制RestTemplate
56 | 通过WebClient访问Web资源
57 | SpringBucks实战项目进度小结
58 | 设计好的RESTful Web Service(上)
59 | 设计好的RESTful Web Service(下)
60 | 什么是HATEOAS
61 | 使用Spring Data REST实现简单的超媒体服务(上)
62 | 使用Spring Data REST实现简单的超媒体服务(下)
63 | 分布式环境中如何解决Session的问题
64 | 使用WebFlux代替Spring MVC(上)
65 | 使用WebFlux代替Spring MVC(下)
66 | SpringBucks实战项目进度小结
67 | 认识Spring Boot的组成部分
68 | 了解自动配置的实现原理
69 | 动手实现自己的自动配置
70 | 如何在低版本Spring中快速实现类似自动配置的功能
71 | 了解起步依赖及其实现原理
72 | 定制自己的起步依赖
73 | 深挖Spring Boot的配置加载机制
74 | 理解配置背后的PropertySource抽象
75 | 认识Spring Boot的各类Actuator Endpoint
76 | 动手定制自己的Health Indicator
77 | 通过Micrometer获取运行数据
78 | 通过Spring Boot Admin了解程序的运行状态
79 | 如何定制Web容器的运行参数
80 | 如何配置容器支持HTTP/2(上)
81 | 如何配置容器支持HTTP/2(下)
82 | 如何编写命令行运行的程序
83 | 了解可执行Jar背后的秘密
84 | 如何将Spring Boot应用打包成Docker镜像文件
85 | SpringBucks实战项目进度小结
86 | 简单理解微服务
87 | 如何理解云原生(Cloud Native)
88 | 12-Factor App(上)
89 | 12-Factor App(下)
90 | 认识Spring Cloud的组成部分
91 | 使用Eureka作为服务注册中心
92 | 使用Spring Cloud Loadbalancer访问服务
93 | 使用Feign访问服务
94 | 深入理解服务发现背后的DiscoveryClient
95 | 使用Zookeeper作为服务注册中心
96 | 使用Consul作为服务注册中心
97 | 使用Nacos作为服务注册中心
98 | 如何定制自己的DiscoveryClient
99 | SpringBucks实战项目进度小结
100 | 使用Hystrix实现服务熔断(上)
101 | 使用Hystrix实现服务熔断(下)
102 | 如何观察服务熔断
103 | 使用Resilience4j实现服务熔断
104 | 使用Resilience4j实现服务限流(上)
105 | 使用Resilience4j实现服务限流(下)
106 | SpringBucks实战项目进度小结
107 | 基于Git的配置中心(上)
108 | 基于Git的配置中心(下)
109 | 基于Zookeeper的配置中心
110 | 深入理解Spring Cloud的配置抽象
111 | 基于Consul的配置中心
112 | 基于Nacos的配置中心
113 | SpringBucks实战项目进度小结
114 | 认识Spring Cloud Stream
115 | 通过Spring Cloud Stream访问RabbitMQ
116 | 通过Spring Cloud Stream访问Kafka
117 | SpringBucks实战项目进度小结
118 | 通过Dapper理解链路治理
119 | 使用Spring Cloud Sleuth实现链路追踪
120 | 如何追踪消息链路
121 | 除了链路还要治理什么
122 | SpringBucks实战项目进度小结
123 | 结课测试&结束语
本节摘要

毋庸置疑,Spring 早已成为 Java 后端开发事实上的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分 Java 后端程序员在日常工作中也会接触到 Spring ,在使用的过程中不知道你是否遇到这些问题:

  1. 在代码之外,看着一堆依赖和配置,总是有些摸不清方向;
  2. 看着这么多组件,总是不知道该从何入手;
  3. 看着一同入职的小伙伴把框架玩得很溜,总是不明白自己到底哪里没开窍。

从 2002 年误打误撞开始写 Java 后,就把这门语言当做自己的主要工作语言了,一路上踩过不少坑,因此深有感触,还记得前些年 Spring Boot 和 Spring Cloud 还没有出现,我们在开发一个互联网金融相关的项目,大致要求如下:

  1. 前端有 PC、HTML5 和 APP,通过接口与后端系统交互,后端再访问核心系统,所有数据存储于 MySQL 中。
  2. 整个应用部署在私有云上,应用实例要能根据业务量动态扩容或者缩容,遇到紧急情况时,系统还要能够自动或者通过后台开关手动降级......

一连串的需求如潮水般涌来,要命的是留给我们的时间还特别紧张,当时的内心还是有些小崩溃的,后来平复了一下心情,除了那些基本的功能性需求,还梳理了那些非功能性的点:

  1. 需要发布 RESTful Web Services
  2. 考虑到系统的吞吐量要求,需要实现读写分离,将大部分数据缓存到 Redis 中
  3. 系统是集群化部署的,Web 层的系统可能需要分布式 Session
  4. 系统需要有配置开关,最好开关还要实时生效
  5. 系统要能实现服务的自动注册与发现,在集群中做到负载均衡
  6. 遇到突发流量或者故障,系统要能熔断
  7. 为了缩短实时链路,有些不必要的操作可以通过消息来传递
  8. 开发、测试、预发布、生产每个环境的配置文件和配置项会有区别,需要独立配置
  9. ……

长长的清单一眼望不到尽头,更要命的是产品经理和老板在提需求时基本不会和你说这些,但在出问题时,没考虑到这些点,锅都是你的,谁让你是专业人士呢。

大厂有丰富的基础设施,能帮助业务实现很多非功能性需求,但如果是小公司,技术积累不多,那就只能靠加班加点堆积代码来实现,没给自己少埋坑,比如把开关做在数据库里,每次判断都 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 的时候,难免会遇到这些问题:

  1. 官方文档虽然全面,但面对庞杂的知识体系,很多初学者一时不知该从哪里下手;
  2. 手册式的书籍内容丰富,但平铺直叙的风格也很难让人快速抓住重点;
  3. 网络也有很多的文章可以参考,但要不就是知识点太分散,要不就是在围绕那几个常见的点“炒冷饭”;
  4. 有的教程写得也很不错,但只是介绍了某一个框架,那我在面对一打框架的时候,该怎么把它们结合到一起呢?

除此之外,很少有人会在文章或教程里去讲述框架扩展定制等相关的东西,而我在工作中则经常需要去考虑怎么让框架更好地为业务落地去服务,我也希望能把自己的经验传递给更多的工程师。

原理和实战相辅相成是本课程的一大特色,整个学习周期你将跟随我搭建一个线上咖啡馆的实战项目,通过实战把所有零碎的知识点串联起来,通过即学即用的方式,让你把知识点掌握得更牢固,理解得更透彻。

不同于市面上大多数教程,我希望不仅带给你 Spring Framework、Spring Boot 与 Spring Cloud 的实战技巧,更让你了解这些工具背后的关键机制与实现原理,真正做到活学活用。

我是谁?

我是丁雪丰,喜欢写程序,也是《Spring Boot 实战》与《Spring 攻略》的译者,目前就职于平安壹钱包,之前也在百度和阿里工作过。期间写过业务代码,做过中间件,干过运维,也搞过系统架构,对 Spring 全家桶产品进行过各种封装与定制,也正因为这样的工作经历,我可以从不同的角度认识和深入理解这些框架。

在这门课程中,我也会把自己这些年积累的第一手经验毫无保留地分享给大家。

你能获得什么?

1. 通过经验学习,提升实战技巧

课程中会有很多关于“怎么用”的说明,比如:

  • 怎么用 JPA 快速实现一个带特定分页查询的 CRUD Repository?
  • 怎么用 Spring MVC 实现 RESTful Web Service?
  • 怎么用 Spring Boot 搭建一个具有较强可运维性的应用?
  • 怎么通过 Sleuth 实现服务追踪等等?

不仅会用,还得用的爽,那些能提升开发效率的框架、工具都在我们的课程涉猎范围之内。

在讲明白“怎么用”的同时,我也希望能帮助大家解决遇到问题时的“怎么办”,比如:

  • 明明做了 AOP 拦截,我的 Bean 却没有被增强,怎么办?
  • Web 层部署在集群中,需要解决分布式 Session 的问题,怎么办?
  • 一直在用 RestTemplate 调用 Web 服务,请求量大了需要优化,怎么办?
  • 默认的 Tomcat 配置不能满足实际需要,需要修改一些配置,怎么办?

在掌握了“怎么用”,了解了“怎么办”之后,在实际工作中就可以做到从容应对。

2. 通过原理剖析,加深理解认识

  • 为什么 Spring Boot 能做到引入一个依赖就完成一堆配置?
  • 为什么 Spring Boot 最终生成的 Jar 包可以直接运行?
  • 为什么一行代码都没改就能在 Eureka、ZooKeeper、Consul 之间灵活切换注册中心?

一旦了解了它的原理,自然在遇到问题时就能有新的思路,“怎么做”的灵光乍现也得在日常有所积累。

  • 希望对运行时的 Web 层和 DAO 层有更多的把控,要怎么做?
  • 系统有些关键业务指标要输出给监控系统,又不想自己从头搞一套接口,要做怎么做?
  • Spring Boot 用的久了,公司有个内部设施也希望能像它一样有个 Starter Dependency,要怎么做?
  • 手头负责的系统还是 Spring 3.x 的,又要引入新的东西,希望能实现 Spring Boot 那样的自动配置,要怎么做?

不仅能知其然,还要能知其所以然,融会贯通后再运用到工作中去,让 Spring 真正为你所用。

3. 通过案例实践,巩固学习效果

课程以实战为主,全程贯穿一个咖啡馆的系统—SpringBucks,包含了下单、制作、派送的步骤,随着课程的推进会不断丰满,通过 Spring Framework、Spring Boot 和 Spring Cloud 打造一个完整的系统,麻雀虽小五脏俱全,将课程涉及的大部分内容结合起来,并部署到云上。

在学习过程中,无论你碰到什么问题,都可以通过留言与我互动,我会及时回复大家的问题,并根据大家的反馈,对后续的课程内容进行相应的补充和调整。

PDF 课件和源代码下载地址:

https://gitee.com/geektime-geekbang/geektime-spring-family

Spring 必备基础

登录 后留言

全部留言(89)

  • 最新
  • 精选
发条橙子 。
老师 , 最近正准备抠 《spring技术内幕》这本书 , 是否这本书和本视频课程同时学习更加高效 。 同时看到作者是 《Spring实战》 以及 《spring攻略》的译者 。 本视频课程是否会包含着两本书里的内容 , 学习本视频时配合着两本书看是否更高效呢

作者回复: 谢谢,我觉得书和本课程并不冲突,可以互相结合。在课程中我并不会覆盖Spring所有的内容,毕竟现在Spring已经很庞大了,我只会涉及最常用的那些功能,20/80法则到哪里都适用。在一些我觉得有趣的地方,我也会结合我自己的一些经验做展开,我个人认为展开的地方才是课程的价值所在。

2019-02-11
23
IThinkIGottaGo
极客时间一直以来作为一款 IT 知识付费产品,课程包罗了前后端大数据有关的技术分享,也包括了非技术的法律,面试等等软技能,涵盖面不可谓不广泛。而且在中国这个 Java 开发依然是开发者主力军的背景下,Spring 本身对于 Java 后端这套体系来说,又是在如今日新月异的技术迭代中让 Java 这个久经企业检验的体系在未来技术迭代中保持年轻的重要助力。作为一个从杨晓峰老师《Java核心技术36讲》开始入坑的用户来说不免觉得有些不够畅快。但这次终于等到了 Spring 的相关课程,而且一次还是全家桶,让我立刻投身到了学习之中,也是补全了极客时间 Java 体系的又一个大块。希望丁老师能为我们带来有质量,有新意的课程,让无论对 Spring 熟悉不熟悉的朋友们,都能再次领略这个可以说和 jQuery 之于前端一样,深远的影响 Java 开发们的,且不断发展,进步至今的框架之美。

作者回复: 多谢支持

2019-02-11
12
Miles Shuai
老师,各位同学,我在谷歌和百度上找了很长时间都找不到spring的官方文档中文翻译,能否给我一个链接?

作者回复: 新版本的Spring没有完整的中文文档,就不用费力找了

2019-03-10
2
6
Simon
极客时间有PC版吗? 手机上看老师的演示,实在费劲。 另外能在正式代码演示前,帮忙介绍IDE环境的设置吗?

编辑回复: 有的,time.geekbang.org,专栏介绍页面有写

2019-02-11
4
LEO
初学者只看老师的课程视频就可以学会spring了吗?还是说还需要看别的资料去补充?

作者回复: 可以看一下课程的课程信息最下面,在有提到的基础后,学习这个课程,收获会更大些。另外,如果是Spring的初学者,我个人建议最好再看些其他的资料做交叉学习,效果也许更好

2019-02-15
3
丁老师,我想学习springboot学习到精通的哪种,可是我现在只有一些Java基础,如果学习了您的专栏,可以达到什么程度?

作者回复: 你的目标是很不错的,不过只靠学习这个专栏是达不到你要的精通的,这还需要去了解很多东西,做很多的实践。

2019-11-01
2
2
仲夏
老师,有了你在课程说的Java数据库之类的基础,应该可以直接学习这门课,学会了这门课spring全家桶水平是怎么样呢

作者回复: 不只是数据库操作,我们在文字里列出了不少需要提前学习的知识点,建议都先看一下。至于学习的效果,我觉得因人而异吧,如果只是靠看和听,那也就是了解个大概吧,自己还是要花时间跟着课程去实践的。

2019-10-07
2
2
小猴子
老师 请问 用的spring的版本是多少? springboot的版本是多少??

作者回复: 前半段课程Spring Boot 2.1.4(Spring对应是5.1.6),后面正好出2.1.5(Spring对应是5.1.7)了,就顺手升级了。Spring Cloud用的是Greenwich SR1。

2019-07-02
2
说梦话能治吗
会着重讲解springcloud吗?

作者回复: 在课程大纲里我们有专门一部分讲SpringCloud的

2019-05-29
2
Geek_5cd4cf
老师老师 请问2021年了 我学这个会晚吗 会不会不够与时俱进呀

作者回复: 的确是有些代码放到目前的版本最新版本上跑不起来,需要注意下版本号。大体上的思想和内容还是可以作为入门材料了解一下的,细节上需要注意下。

2021-06-18
1
收起评论