精通 Spring Boot 42 讲

课程介绍

Spring Boot 是 Spring 官方发展十几年后推出的重量级产品,具有快速开发、快速部署、方便配置、便于监控等特性,这些特性将会重构整个研发流程、提升研发效率,达到快速开发、交付的目的,同时也让 Spring Boot 成为 Java 领域最佳微服务架构落地技术。

去年 11 月,我在 GitChat 平台上发布的达人课《快速学习 Spring Boot 技术栈》已经累计销售了 2400 余份。当时 Spring Boot 版本还是 1.5.8,在今年的 3 月 Spring 官方发布了 Spirng Boot 2.0,其在 1.0 的基础上进行了大幅优化,集成了很多新技术、新特性,大幅提高了 Spring Boot 技术栈性能。

《精通 Spring Boot 42 讲》在上版课程的基础上进行了重新规划,内容紧贴 Spring Boot 技术生态,采用 Spring Boot 2.0 技术体系中最新技术点,课程丰富度得到了进一步提升,课程内容覆盖了 Spring Boot 所有使用场景。

本课程共包含五大部分,由浅入深的讲解了 Spring Boot 技术栈的使用场景和实践方式:

  • PART 1:从零开始认识 Spring Boot;
  • PART 2:项目中最常用的 Web 相关技术;
  • PART 3:Spring Boot 和数据库的技术实践;
  • PART 4:Spring Boot 如何集成 MQ、缓存、NoSQL 等中间件;
  • PART 5:综合实践。

认真学完这个课程后,将会对 Spring Boot 有进一步的了解,具备使用 Spring Boot 上手进行开发的基本能力。

作者介绍

纯洁的微笑(真名:张强),高级 Java 工程师、架构师,GitChat 畅销课程作者。

曾从零参与公司技术平台建设,组织平台进行过四次大架构升级。目前在一家第三方支付公司做技术总监,负责微服务架构实践和大数据平台建设。

课程内容

开篇词:为什么要学 Spring Boot

大家好,我是纯洁的微笑,从 2013 年到现在,我一直从业于第三方支付和互联网金融这两个领域。在互联网金融公司工作期间,从零参与了公司技术平台建设,随着公司业务不断发展,组织技术团队对平台进行过四次大架构升级,从最初单体架构发展到最后的微服务架构,我也从一个一线开发人员成长为互联网金融公司的技术负责人。

2016 年,也就是构建第四代平台架构的时候,我在技术调研时了解到了 Spring Boot,初步尝试使用后,被其简洁快速开发的魅力所吸引,随即推广到公司所有项目中。为了促进学习,我在网络上连载了 Spring Boot 的系列文章,意外得到广大网友的认可,早期的文章可以在我的个人公众号或者博客查看:

  • 我的公众号
  • 我的博客

2017 年我又从互联网金融回归到第三方支付行业,当时公司正在构建新一代的支付平台,技术栈和互金的第四代平台一样,采用的 Spring Boot + Spring Cloud 相关生态,有所不同的是支付行业所面临的业务更加复杂,交易规模更为庞大。在互联网金融公司中第四代平台大概有二十多个微服务支撑平台,现在公司的新一代支付系统微服务项目六十多个,每个服务部署三个实例就高达一百多个;在互金行业只有在抢标的时候有大量的流量,一年交易二、三十亿,现在我就职的支付公司每天交易量就高达四、五十亿,对系统的稳定性和性能要求更高。

回到第三方支付行业后,我开始负责公司新一代平台的微服务架构实践,以及微服务架构下大数据平台建设。经过两家公司对 Spring Boot 的使用,我越发认识到 Spring Boot 对传统开发带来的挑战,Spring Cloud 未来可能会随着 Kubernetes 和 Service Mesh 的发展有所弱化,但是 Spring Boot 给开发带来的影响是深远的。恰逢今年 Spring Boot 2.0 的推出,可以预见的是未来的发展会越来越好。

Spring Boot 2.0 课程

Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 的热潮,单从我个人博客访问量大幅增加,就可以感受到大家对学习 Spring Boot 的热情。

去年 11 月,我在 GitChat 平台上发布的达人课《快速学习 Spring Boot 技术栈》已经累计销售了 2400 余份,目前还在不断的增长中,说明行业内对学习 Spring Boot 的需求在不断地上涨。

去年在写 Spring Boot 课程时版本还是 1.5.8,在今年的 3 月,Spring 官方发布了 Spring Boot 2.0,其在 1.0 的基础上进行了大幅优化,2.0 集成了很多优秀的技术和新特性,对性能的提升非常明显。

Spring Boot 2.0 升级的同时也在 1.0 的基础上大量优化了 API 的使用,很多 1.0 的 API 在 2.0 版本中已经不适用,在 2.0 版本中使用之前的 API 操作往往会报错,我也收到了大量类似的留言。结合这些反馈信息,本课程会参考以上内容的基础上完全重新设计,课程的变动点如下:

  • 2.0 的课程将包含 1.0 的课程,并且会对 1.0 的课程内容进行升级,Spring Boot 使用的版本升级为 2.X。
  • 1.0 只是将当时最常用的实战功能进行了提炼,2.0 课程将会系统性介绍 Spring Boot 各种使用场景。
  • 课程内容和技术栈都会使用最新稳定版本,课程数量也由之前的 16 课扩充为现在的 42 课,相当于写了一本 Spring Boot 的系统图书。

通过此课程的学习,相信你会完全掌握 Spring Boot 2.0 的使用。下面我们先来了解一下什么是 Spring Boot /p>

《精通 Spring Boot 42 讲》。

Spring Boot 介绍

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。它的核心设计思想是:约定优于配置,Spring Boot 所有开发细节都是依据此思想进行实现的。

Spring Boot 是一套全新的框架,它来自于 Spring 大家族,因此 Spring 所有具备的功能它都有并且更容易使用;同时还简化了基于 Spring 的应用开发,通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。

下图展示出了 Spring Boot 在 Spring 生态中的位置:

精通 Spring Boot 42 讲

上图为 2014 年到 2018 年 Spring Boot 的百度指数,可以看出 2.0 的推出引发了搜索高峰。

通过谷歌趋势来看 Spring Boot 在美国的使用情况发现,中国和美国使用 Spring Boot 的整体频率保持一致,看来国内技术人同步全球的技术频率越来越快。

精通 Spring Boot 42 讲

Spring Boot 和微服务架构

微服务架构是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大。在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;在用户增加的同时如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。

如果还按照以前传统开发模式,开发一个大而全的系统已经很难满足市场对技术的需求,这时候分而治之的思想被提了出来,于是我们从单独架构发展到分布式架构,又从分布式架构发展到 SOA 架构,服务不断地被拆分和分解,粒度也越来越小,直到微服务架构的诞生。

大约 2009 年开始,Netflix 完全重新定义了它的应用程序开发和操作模型,拉开了微服务探索的第一步,直到 2014 年 3 月 Martin Fowler 写的一篇文章 Microservices 以更加通俗易懂的形式为大家定义了什么是微服务架构。Martin Fowler 在文中阐述了对微服务架构的设想,认为微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。

Spring Boot 诞生时,正处于微服务概念在慢慢酝酿中,Spring Boot 的研发融合了微服务架构的理念,实现了在 Java 领域内微服务架构落地的技术支撑。Spring Boot 在开发、测试、部署、运维等方面都做了大量的优化,使用 Spring Boot 开发项目,可以快速响应需求、独立完成开发部署上线。

Spring Boot 的一系列特性有助于实现微服务架构的落地,从目前众多的技术栈对比来看它是 Java 领域微服务架构最优落地技术,没有之一。

为什么学习 Spring Boot /h3>

《精通 Spring Boot 42 讲》。

Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。同时它集成了大量常用的第三方库配置(如 Redis、MongoDB、JPA、RabbitMQ、Quartz 等),Spring Boot 应用中这些第三方库几乎可以零配置进行开箱即用,大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

使用 Spring Boot 开发项目,有以下几方面优势:

  • Spring Boot 使开发变得简单,提供了丰富的解决方案,快速集成各种解决方案提升开发效率。
  • Spring Boot 使配置变得简单,提供了丰富的 Starters,集成主流开源产品往往只需要简单的配置即可。
  • Spring Boot 使部署变得简单,其本身内嵌启动容器,仅仅需要一个命令即可启动项目,结合 Jenkins、Docker 自动化运维非常容易实现。
  • Spring Boot 使监控变得简单,自带监控组件,使用 Actuator 轻松监控服务各项状态。

从软件发展的角度来讲,越简单的开发模式越流行,简单的开发模式解放出更多生产力,让开发人员可以避免将精力耗费在各种配置、语法所设置的门槛上,从而更专注于业务。这点上,Spring Boot 已尽可能地简化了应用开发的门槛。

Spring Boot 所集成的技术栈,涵盖了各大互联网公司的主流技术,跟着 Spring Boot 的路线去学习,基本可以了解国内外互联网公司的技术特点。

总结

Spring Boot 是一套快速开发框架,在微服务架构的大环境下 Spring Boot 一经推出就受到开源社区的追捧。Spring Boot 有强大的生态整合能力,提供了众多的 Starters 包,非常方便 Spring Boot 集成第三方开源软件达到开箱即用的效果。

Spring Boot 和微服务架构都是未来软件开发的大趋势,越早参与,受益越大。

点击了解《精通 Spring Boot 42 讲》。

第 1-1 课:Spring Boot 产生的背景和它的设计理念

《精通 Spring Boot 42 讲》共分五大部分,第一部分是从零起步的基础内容,共4课,帮助大家快速认识 Spring Boot ,我会带领大家熟悉 Spring Boot 产生的背景和设计理念,同时也会讲解 Spring Boot 的环境搭建和项目介绍,最后以一个 Hello World 为例,来测试一下环境的搭建以及熟悉开发的流程。本章的重点内容是 Spring Boot 2.0 的新变化,如果学习过此前课程的同学可以重点关注这一节。下面我们就具体进入第一讲的内容。

要了解 Spring Boot 产生的背景,我们就必须要先了解一下 Spring 的发展史,不仅因为 Spring Boot 来源于 Spring 体系,而且 Spring Boot 的诞生和 Spring 框架的发展息息相关。

Spring 的发展史

时间回到 2002 年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。

他为了证明自己的想法是正确的,在 2002 年 10 月写了一本书《Expert One-on-One J2EE》,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。

在书中,他展示了如何在不使用 EJB 的情况下构建高质量、可扩展的在线座位预留系统。为了构建应用程序,他编写了超过 30,000 行的基础结构代码,项目中的根包命名为 com.interface21,所以人们最初称这套开源框架为 interface21,这就是 Spring 的前身。

他是谁呢就是大名鼎鼎的 Rod Johnson(下图),Rod Johnson 在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位,更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。现在 Rod Johnson 已经离开了 Spring,成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。

精通 Spring Boot 42 讲

《精通 Spring Boot 42 讲》。

Spring Boot 的核心:约定优于配置

那么什么是约定优于配置呢/p>

约定优于配置(Convention Over Configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量、获得简单的好处,而又不失灵活性。

本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为“user_info”,才需写有关这个名字的配置。

我们可以按照这个思路来设想,我们约定 Controller 层就是 Web 请求层可以省略 MVC 的配置;我们约定在 Service 结尾的类自动注入事务,就可以省略了 Spring 的切面事务配置。

在 Spring 体系中,Spring Boot JPA 就是约定优于配置最佳实现之一,不需要关注表结构,我们约定类名即是表名,属性名即是表的字段,String 对应 varchar,long 对应 bigint,只有需要一些特殊要求的属性,我们再单独进行配置,按照这个约定我们可以将以前的工作大大简化。

Spring Boot 体系将约定优于配置的思想展现得淋漓尽致,小到配置文件、中间件的默认配置,大到内置容器、生态中的各种 Starters 无不遵循此设计规则。Spring Boot 鼓励各软件组织方创建自己的 Starter,创建 Starter 的核心组件之一就是 autoconfigure 模块,也是 Starter 的核心功能,在启动的时候进行自动装配,属性默认化配置。

可以说正是因为 Spring Boot 简化的配置和众多的 Starters 才让 Spring Boot 变得简单、易用、快速上手,也可以说正是约定优于配置的思想彻底落地才让 Spring Boot 走向辉煌。Spring Boot 约定优于配置的思想让 Spring Boot 项目非常容易上手,让编程变得更简单,其实编程本该很简单,简单才是编程的美。

Starters

Spring Boot Starters 基于约定优于配置的理念来设计,Spring Boot Starter 中有两个核心组件:自动配置代码和提供自动配置模块及其它有用的依赖。也就意味着当我们项目中引入某个 Starter,即拥有了此软件的默认使用能力,除非我们需要特定的配置,一般情况下我仅需要少量的配置或者不配置即可使用组件对应的功能。

Spring Boot 由众多 Starter 组成,随着版本的推移 Starter 家族成员也与日俱增。在传统 Maven 项目中通常将一些层、组件拆分为模块来管理,以便相互依赖复用,在 Spring Boot 项目中我们则可以创建自定义 Spring Boot Starter 来达成该目的。

Spring Boot 拥有强大融合社区开源软件的能力,在没有使用 Spring Boot 之前,我们需要按照每个开源软件的特性,将对应的组件包集成到我们的开发项目中,因为每个组件的设计理念和开发团队都不一致,因此会有很多不同的调用风格在我们的项目中。

Spring Boot 整合了主流的开源软件形成了一系列的 Starter,让我们有了一致的编程体验来集成各种软件,Spring Boot 在集成的时候做了大量的优化,让我们在集成的时候往往只需要很少的配置和代码就可以完成。可以说各种 Starters 就是 Spring Boot 最大的优势之一。

以下为常用的 Spring Boot Starter 列表。

名称 描述 Pom
spring-boot-starter 核心 Starter,包括自动配置支持,日志和 YAML Pom
spring-boot-starter-activemq 用于使用 Apache ActiveMQ 实现 JMS 消息 Pom
spring-boot-starter-amqp 用于使用 Spring AMQP 和 Rabbit MQ Pom
spring-boot-starter-cache 用于使用 Spring 框架的缓存支持 Pom
spring-boot-starter-data-elasticsearch 用于使用 ElasticSearch 搜索,分析引擎和 Spring Data ElasticSearch Pom
spring-boot-starter-data-jpa 用于使用 Hibernate 实现 Spring Data JPA Pom
spring-boot-starter-data-mongodb 用于使用基于文档的数据库 MongoDB 和 Spring Data MongoDB Pom
spring-boot-starter-data-redis 用于使用 Spring Data Redis 和 Jedis 客户端操作键—值数据存储 Redis Pom
spring-boot-starter-jta-atomikos 用于使用 Atomikos 实现 JTA 事务 Pom
sring-boot-starter-mail 用于使用 Java Mail 和 Spring 框架 Email 发送支持 Pom
spring-boot-starter-quartz 用于定时任务 Quartz 的支持 Pom
spring-boot-starter-security 对 Spring Security 的支持 Pom
spring-boot-starter-test 用于测试 Spring Boot 应用,支持常用测试类库,包括 JUnit、Hamcrest 和 Mockito Pom
spring-boot-starter-thymeleaf 用于使用 Thymeleaf 模板引擎构建 MVC Web 应用 Pom
spring-boot-starter-validation 用于使用 Hibernate Validator 实现 Java Bean 校验 Pom
spring-boot-starter-web 用于使用 Spring MVC 构建 Web 应用,包括 RESTful。Tomcat 是默认的内嵌容器 Pom
spring-boot-starter-websocket 用于使用 Spring 框架的 WebSocket 支持构建 WebSocket 应用 Pom

这里只节选了我们最常使用的 Starter,完整的 Starter 参考这里:Spring Boot application starters

因为 Spring Boot 足够的强大,很多第三方社区都进行了主动的集成。比如:MyBatis、RabbitMQ(高级用法)等,第三方社区支持的列表,可以在这里查看 Community Contributions,可以看到社区贡献的其他 Starters 列表。

看完这些 Starters 会不会瞬间觉得 Spring Boot 很强大乎我们涉及的开源软件 Spring Boot 都做了支持,在 Spring Boot 环境下使用这些软件,只需要引入对应的 Starter 包即可。

Spring、Spring Boot 和 Spring Cloud 的关系

Spring 最初核心的两大核心功能 Spring IoC 和 Spring Aop 成就了 Spring,Spring 在这两大核心功能上不断地发展,才有了 Spring 事务、Spring MVC 等一系列伟大的产品,最终成就了 Spring 帝国,到了后期 Spring 几乎可以解决企业开发中的所有问题。

Spring Boot 是在强大的 Spring 帝国生态基础上面发展而来,发明 Spring Boot 不是为了取代 Spring,是为了让人们更容易的使用 Spring。所以说没有 Spring 强大的功能和生态,就不会有后期 Spring Boot 的火热,Spring Boot 使用约定优于配置的理念,重新重构了 Spring 的使用,让 Spring 后续的发展更有生命力。

Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装并屏蔽掉复杂的配置和实现原理,最终给开发者提供了一套简单易懂、易部署、易维护的分布式系统开发工具包。

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发。服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。

Spring Cloud 是为了解决微服务架构中服务治理而提供的具备一系列功能的开发框架,并且 Spring Cloud 是完全基于 Spring Boot 而开发,Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。

综上我们可以这样来理解,正是由于 Spring IoC 和 Spring Aop 两个强大的功能才有了 Spring,Spring 生态不断的发展才有了 Spring Boot,使用 Spring Boot 让 Spring 更易用更有生命力,Spring Cloud 是基于 Spring Boot 开发的一套微服务架构下的服务治理方案。

以下为它们之间的关系。

Spring Ioc/Aop > Spring > Spring Boot > Spring Cloud

总结

Spring Boot 诞生一方面是因为 Spring 自身发展所遇到的问题,另一方面在微服务思想诞生之际,急需要一款快速开发工具来实现微服务技术落地,在这样的背景下诞生了 Spring Boot。

Spring Boot 整体的设计思想是:约定优于配置。依赖此设计思路,Spring Boot 进行了大刀阔斧的改革,让开发、测试、部署更为便捷。众多的 Starters 成就了 Spring Boot 的发展,让使用 Spring Boot 开发项目变得更加简单。

点击了解《精通 Spring Boot 42 讲》。

第 1-2 课:Spring Boot 2.0 都更新了什么(上)

2018 年 3 月 1 号 Spring Boot 2.0.0.RELEASE 正式发布,这是 Spring Boot 1.0 发布 4 年之后第一次重大修订,因此有多新功能和特性值得关注!在 Spring Boot 官方博客中我们了解到:Spring Boot 2.0 版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。

我们将 Spring Boot 2.0 更新的技术分为三类进行解读:

  • 第一类,基础环境升级;
  • 第二类,默认软件替换和优化;
  • 第三类,新技术的引入。

基础环境升级

最低 JDK 8,支持 JDK 9,不再支持 Java 6 和 7

Spring Boot 2.0 要求 Java 8 作为最低版本,许多现有的 API 已更新,以利用 Java 8 的特性。例如,接口上的默认方法,函数回调以及新的 API,如 javax.time。如果你正在使用 Java 7 或更早版本,则在开发 Spring Boot 2.0 应用程序之前,需要升级你的 JDK。

Spring Boot 2.0 通过测试可以在 JDK 9 下正常运行,同时 Spring Boot 2.0 宣布不再支持 Java 6 和 7,据我了解国内绝大部分互联网公司的基本环境还在 JDK 7 或者 6 环境下运行,考虑升级 Spring Boot 2.0 的团队需要考虑这个因素。

依赖组件升级

Spring Boot 2.0 基于 Spring Framework 5 构建,本次 Spring Boot 的升级,同时也升级了部分其依赖的第三方组件,主要有以下几个:

  • Jetty 9.4,Jetty 是一个开源的 Servlet 容器,它为基于 Java 的 Web 内容,例如 JSP 和 Servlet 提供运行环境。Jetty 是使用 Java 语言编写的,它的 API 以一组 JAR 包的形式发布。
  • Tomcat 8.5,Apache Tomcat 8.5.x 旨在取代 8.0.x,完全支持 Java 9。
  • Flyway 5,Flyway 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway 可以像 SVN 管理不同人的代码那样,管理不同人的 SQL 脚本,从而做到数据库同步。
  • Hibernate 5.2,Hibernate 是一款非常流行的 ORM 框架。
  • Gradle 3.4,Spring Boot 的 Gradle 插件在很大程度上已被重写,有了重大的改进。
  • Thymeleaf 3.0,Thymeleaf 3 相对于 Thymeleaf 2 有非常大的性能提升。

默认软件替换和优化

HikariCP

默认连接池已从 Tomcat 切换到 HikariCP,HikariCP 是一个高性能的 JDBC 连接池,Hikari 是日语“光”的意思。

HikariCP 号称是 Java 业界最快的数据库连接池,官网提供了 c3p0、dbcp2、tomcat、vibur 和 Hikari 等数据连接池的性能对比。

精通 Spring Boot 42 讲

默认情况下,Spring Boot 2.0 使用 Netty WebFlux,因为 Netty 在异步非阻塞空间中被广泛使用,异步非阻塞连接可以节省更多的资源,提供更高的响应度。通过比较 Servlet 3.1 非阻塞 I/O 没有太多的使用,因为使用它的成本比较高,Spring WebFlux 打开了一条实用的通路。

使用 Spring WebFlux/WebFlux.fn 提供响应式 Web 编程支持,WebFlux 是一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好,此功能来源于 Spring 5.0。

Spring Boot 2.0 也提供了对响应式编程的自动化配置,如 Reactive Spring Data、Reactive Spring Security 等。

点击了解《精通 Spring Boot 42 讲》。

最后,Spring Boot 2.0 的新技术还有一个有意思的彩蛋设计,我们会再下一讲介绍。同时,我会详细解释一下 Spring Boot 1.0 到 Spring Boot 2.0 API 上的一些变化,以及关于是否需要升级 Spring Boot 的个人建议。

结语:总结 Spring Boot 应用实战

我们一起回顾下本系列课程,该课程其实是 Spring Boot 应用实战的四十多个常用案例,这些案例提炼于工作中经常使用的场景,目标是通过实践真实案例来学习 Spring Boot ,以帮助大家快速掌握如何在工作中使用 Spring Boot 技术。

在准备这系列课程之前,我在博客上连载了一系列关于 Spring Boot 的文章,期间得到了广大读者的不少反馈。根据这些反馈信息我在思考,怎样才能比较全面快速地掌握 Spring Boot,以及如何进行日常项目的开发。

通过多年的项目研发和读者反馈,让我总结出:唯有真正的实践才是学习的最佳路径,因此在本系列课程中,几乎每课有对应的示例项目,强烈建议大家根据课程内容,一边学习一边敲代码动手练习,把课程中的每一个示例都一一实践,这样全程学习下来相信对 Spring Boot 会有一个比较深刻的理解。

本课程共包含五大部分,通过不同的示例讲解了 Spring Boot 技术栈的使用场景和实践方式。

第一部分从零开始认识 Spring Boot,主要介绍了什么是 Spring Boot、诞生的背景和设计理念,Spring Boot 2.X 主要更新了哪些内容,我们从 1.X 升级到 2.X 的时候需要注意哪些内容,最后介绍了如何去开发一个 Hello World 版的 Spring Boot 项目,方便大家了解 Spring Boot 项目的开发流程。

第二部分主要介绍了项目中 Spring Boot Web 的相关技术,如今所有研发的项目中 Web 项目占据了 90 % 以上市场份额,Web 开发技术是我们最常使用的。因此这部分内容介绍了如何使用 Spring Boot 创建常见的 Web 应用,包括 Spring Boot 整合 JSP;模板引擎 Thymeleaf 的基础使用、高阶使用、页面布局;Web 开发过程中有一些常见的使用场景,如上传文件、构建 RESTful 服务、Swagger 2 的使用,以及如何使用 WebSocker 技术创建一个多人聊天室等。

第三部分Spring Boot 和数据库技术实践,数据是公司最重要的资产,在项目开发中数据库操作是永远无法绕过的一步,也是最高频最重要的功能操作。这部分内容介绍了数据库操作的三大 ORM 框架:JDBC、MyBatis、Spring Boot JPA,演示了如何在 Spring Boot 项目中集成操作、构建多数据源、集成 Druid 连接池等,最后使用 JPA 和 Thymeleaf 综合实践。

第四部分Spring Boot 集成 MQ、缓存、NoSQL 等中间件,中间件是互联网公司支撑高并发业务的必备组件,常用的组件有缓存、消息中间件、NoSQL 数据库、定时任务等。这部分内容介绍了项目中这些中间件的使用方式,以及如何使用 Spring Boot 设计一个邮件系统。

第五部分综合实践,最后一部分主要关注的是 Spring Boot 项目的安全控制、应用监控、集群监控、测试部署、Docker 打包部署,最后用一个简单的用户管理系统回顾了课程中的相关技术点。

这里我画了一个思维导图,帮助大家整理整个课程的知识点:

精通 Spring Boot 42 讲

在课程的最后,推荐一些 Spring Boot 的学习资源:

  • Spring Boot 参考指南,是 S

    来源:蔚1

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月4日
下一篇 2018年10月4日

相关推荐