精通 Spring Boot 42 讲
Java 工程师掌握 Spring Boot 技术栈,实践微服务
优惠券已抵扣
余额抵扣
还需支付
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
微笑很纯洁
一个有故事的程序员,公号:纯洁的微笑,博客:www.ityouknow.com
展开
-
开篇词:为什么要学 Spring Boot
大家好,我是纯洁的微笑,从 2013 年到现在,我一直从业于第三方支付和互联网金融这两个领域。在互联网金融公司工作期间,从零参与了公司技术平台建设,随着公司业务不断发展,组织技术团队对平台进行过四次大架构升级,从最初单体架构发展到最后的微服务架构,我也从一个一线开发人员成长为互联网金融公司的技术负责人。2016 年,也就是构建第四代平台架构的时候,我在技术调研时了解到了 Spring Boot,...原创 2020-09-22 12:12:32 · 797 阅读 · 0 评论 -
第 1-1 课:Spring Boot 产生的背景和它的设计理念
《精通 Spring Boot 42 讲》共分五大部分,第一部分是从零起步的基础内容,共4课,帮助大家快速认识 Spring Boot ,我会带领大家熟悉 Spring Boot 产生的背景和设计理念,同时也会讲解 Spring Boot 的环境搭建和项目介绍,最后以一个 Hello World 为例,来测试一下环境的搭建以及熟悉开发的流程。本章的重点内容是 Spring Boot 2.0 ...原创 2020-09-22 12:12:31 · 634 阅读 · 0 评论 -
第 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....原创 2020-09-22 12:12:29 · 442 阅读 · 0 评论 -
第 1-2 课:Spring Boot 2.0 都更新了什么(下)
彩蛋Spring Boot 2.0 支持了动态 Gif 的启动 Logo 打印。在 Spring Boot 1.0 项目中 src/main/resources 路径下新建一个 banner.txt 文件,文件中写入一些字符,启动项目时就会发现默认的 Banner 被替换了,到了 Spring Boot 2.0 现在可以支持 Gif 文件的打印,Spring Boot 2.0 在项目启动的时候...原创 2020-09-22 12:12:28 · 479 阅读 · 0 评论 -
第 1-3 课:Spring Boot 依赖环境和项目结构介绍
使用 Spring Boot 开发项目需要有两个基础环境和一个开发工具,这两个环境是指 Java 编译环境和构建工具环境,一个开发工具是指 IDE 开发工具。Spring Boot 2.0 要求 Java 8 作为最低版本,需要在本机安装 JDK 1.8 并进行环境变量配置,同时需要安装构建工具编译 Spring Boot 项目,最后准备一个顺手的 IDE 开发工具即可。构建工具是一个把源代码...原创 2020-09-22 12:12:26 · 420 阅读 · 0 评论 -
第 1-4 课:写一个 Hello World 来感受 Spring Boot
在学习新技术的时候我们都喜欢先写一个 Hello World 程序,一方面可以验证基础环境的搭建是否正确;另一方面可以快速了解整个开发流程。本节课我们就来学习 Spring Boot 的第一个 Hello World 程序。什么是 Spring BootSpring 在官方首页是这样介绍的: BUILD ANYTHING.Spring Boot is designed to get yo...原创 2020-09-22 12:12:25 · 418 阅读 · 0 评论 -
第 2-1 课:Spring Boot 对基础 Web 开发的支持(上)
《精通 Spring Boot 42 讲》共分五大部分,这是第二部分内容,主要讲解了 Web 开发相关的技术点,共 10 课。首先让大家快速认识 Spring Boot 对基础 Web 开发所做的优化;接下来讲解了如何在 Spring Boot 中使用前端技术 JSP、Thymeleaf,重点介绍了 Thymeleaf 的各种使用场景;后面几课介绍了如何使用 Spring Boot 来构建 ...原创 2020-09-22 12:12:23 · 263 阅读 · 0 评论 -
第 2-1 课:Spring Boot 对基础 Web 开发的支持(下)
我们接着上一课的内容继续讲解。数据校验在很多时候,当我们要处理一个应用程序的业务逻辑时,数据校验是必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在 Java 应用程序中,必须要对输入进来的数据从语义上分析是有效的,也就是数据校验。输入验证是最重要的 Web 开发任务之一,在 Spring MVC 中有两种方式可以验证输入:一种是 Spring 自带...原创 2020-09-22 12:12:22 · 268 阅读 · 0 评论 -
第 2-2 课:Spring Boot 项目中使用 JSP
JSP(Java Server Pages,Java 服务器页面)是一个简化的 Servlet 设计,它是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术类似 ASP 技术,它是在传统的网页 HTML(标准通用标记语言的子集)文件(.html)中插入 Java 程序段(Scriptlet)和 JSP 标记(tag),从而形成 JSP 文件,后...原创 2020-09-22 12:12:20 · 509 阅读 · 0 评论 -
第 2-3 课:模板引擎 Thymeleaf 基础使用
模板引擎模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的 HTML 文档。模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换,便生成了最终需要的业务数据(如网页)。“置换型”模板引擎实现简单,但其效率低下,无法满足高负载的应用需求(比如有海量访问的网...原创 2020-09-22 12:12:18 · 401 阅读 · 0 评论 -
第 2-4 课:模板引擎 Thymeleaf 高阶用法
上一课我们介绍了 Thymeleaf 最常用的使用语法,这一课我们继续学习 Thymeleaf 高阶的使用方式,并对这些使用方式进行总结分类。其实上一课的内容,基本可以满足 Thymeleaf 80% 的使用场景,高阶用法会在某些场景下提供更高效、便捷的使用方式。内联 [ [ ] ]如果不想通过 th 标签而是简单地访问 model 对象数据,或是想在 javascript 代码块里访问 mo...原创 2020-09-22 12:12:17 · 374 阅读 · 0 评论 -
第 2-6 课:使用 Spring Boot 和 Thymeleaf 演示上传文件
在互联网行业中上传文件是一个高频的使用场景,常用的案例有上传头像、上传身份证信息等。Spring Boot 利用 MultipartFile 的特性来接收和处理上传的文件,MultipartFile 是 Spring 的一个封装的接口,封装了文件上传的相关操作,利用 MultipartFile 可以方便地接收前端文件,将接收到的文件存储到本机或者其他中间件中。首先通过一个小的示例来了解 Spri...原创 2020-09-22 12:12:15 · 351 阅读 · 0 评论 -
第 2-5 课:Thymeleaf 页面布局
页面布局就是对前端的页面进行划分区域,每个区域有不同的职责,布局是为了更好地重复利用前端代码,避免大量重复性的劳动。在现有的前端系统中,页面布局成了前端开发最重要的工作之一,Thymeleaf 在设计之初对页面布局就有考虑,通过 Thymeleaf 的相关语法可以很容易地实现对前端页面布局。快速入手Spring Boot 2.0 将布局单独提取了出来,需要单独引入依赖:thymeleaf-la...原创 2020-09-22 12:12:14 · 467 阅读 · 0 评论 -
第 2-7 课:使用 Spring Boot 上传文件到 FastDFS
什么是 FastDFSFastDFS 是一个开源的轻量级分布式文件系统,它解决了大数据量存储和负载均衡等问题,特别适合以中小文件(建议范围:4 KB < file_size < 500 MB)为载体的在线服务,如相册网站、视频网站等。在 UC 基于 FastDFS 开发向用户提供了网盘、社区、广告和应用下载等业务的存储服务。FastDFS 由 C 语言开发,支持 Linux、Fre...原创 2020-09-22 12:12:13 · 278 阅读 · 0 评论 -
第 2-8 课:Spring Boot 构建一个 RESTful Web 服务
现在越来越多的企业推荐使用 RESTful 风格来构建企业的应用接口,那么什么是 RESTful 呢?什么是 RESTfulRESTful 是目前最流行的一种互联网软件架构。REST(Representational State Transfer,表述性状态转移)一词是由 Roy Thomas Fielding 在他 2000 年博士论文中提出的,定义了他对互联网软件的架构原则,如果一个架构符...原创 2020-09-22 12:12:11 · 607 阅读 · 0 评论 -
第 2-9 课:使用 Swagger 2 构建 RESTful APIs
什么是 SwaggerSwagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的一种交互式文档,客户端 SDK 的自动生成等功能。Swagger 的目标是为 REST APIs 定义一个标准的、与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,消费者就能与远...原创 2020-09-22 12:12:09 · 314 阅读 · 0 评论 -
第 2-10 课:使用 Spring Boot WebSocket 创建聊天室
什么是 WebSocketWebSocket 协议是基于 TCP 的一种网络协议,它实现了浏览器与服务器全双工(Full-duplex)通信——允许服务器主动发送信息给客户端。以前,很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每 1 秒),由浏览器对服务器发出 HTTP 请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要...原创 2020-09-22 12:12:07 · 232 阅读 · 0 评论 -
第 3-1 课:Spring Boot 使用 JDBC 操作数据库
《精通 Spring Boot 42 讲》共分五大部分,第三部分主要讲解 Spring Boot 和数据库开发,共 8 课。Spring Boot 支持了主流的 ORM 框架:MyBatis、Hibernate 和 Spring JDBC,几种 ORM 在不同的场景下各有优势,在 Spring Boot 体系内都有对应的 Starter 包以方便集成。首先将讲解 Spring JDBC 的使...原创 2020-09-22 12:12:06 · 312 阅读 · 0 评论 -
第 3-2 课:如何优雅地使用 MyBatis XML 配置版
MyBatis 是现如今最流行的 ORM 框架之一,我们先来了解一下什么是 ORM 框架。ORM 框架对象关系映射(Object Relational Mapping,ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。为什么需要 ORM?当你开发一个应用程序的时候(...原创 2020-09-22 12:12:04 · 277 阅读 · 0 评论 -
第 3-3 课:如何优雅地使用 MyBatis 注解版
自从 Java 1.5 开始引入了注解,注解便被广泛地应用在了各种开源软件中,使用注解大大地降低了系统中的配置项,让编程变得更为优雅。MyBatis 也顺应潮流基于注解推出了 MyBatis 的注解版本,避免开发过程中频繁切换到 XML 或者 Java 代码中,从而让开发者使用 MyBatis 会有统一的开发体验。因为最初设计时,MyBatis 是一个 XML 驱动的框架,配置信息是基于 XML...原创 2020-09-22 12:12:02 · 284 阅读 · 0 评论 -
第 3-4 课: Spring Data JPA 的基本使用
Spring Data JPA 是 Spring Boot 体系中约定优于配置的最佳实现,大大简化了项目中数据库的操作。从本课开始将会从 JPA 的由来开始讲解,什么是 JPA、Spring Boot JPA 的实现,以及如何使用。概念JPA 由来ORM 框架能够将 Java 对象映射到关系数据库中,能够直接持久化复杂的 Java 对象。ORM 框架的出现,可以让开发者从数据库编程中解脱出...原创 2020-09-22 12:12:01 · 283 阅读 · 0 评论 -
第 3-5 课:Spring Data JPA 的高级用法
上节课介绍了 Spring Data JPA 的使用方式和基本查询,常用的增、删、改、查需求 Spring Data JPA 已经实现了。但对于复杂的数据库场景,动态生成方法不能满足,对此 Spring Data JPA 提供了其他的解决方案,这就是这节课的主要内容。自定义 SQL 查询使用 Spring Data 大部分的 SQL 都可以根据方法名定义的方式来实现,但是由于某些原因必须使用自...原创 2020-09-22 12:11:59 · 447 阅读 · 0 评论 -
第 3-6 课:Spring Data JPA 多数据源的使用
项目中使用多个数据源在以往工作中比较常见,微服务架构中不建议一个项目使用多个数据源。在微服务架构下,一个微服务拥有自己独立的一个数据库,如果此微服务要使用其他数据库的数据,需要调用对应库的微服务接口来调用,而不是在一个项目中连接使用多个数据库,这样微服务更独立、更容易水平扩展。虽然在微服务架构下,不提倡一个项目拥有多个数据源,但在 Spring Boot 体系中,项目实现多数据源调用却是一件很容...原创 2020-09-22 12:11:58 · 265 阅读 · 0 评论 -
第 3-7 课:Spring Boot 集成 Druid 监控数据源
Druid 介绍Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL 解析器组成,该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计 SQL 信息、SQL 性能收集、SQL 注入检查、SQL 翻译等,程序员可以通过定制来实现自己需要的功能。Druid 首先是一个数据库连接池,但它不仅仅是一个数据库连接池,还...原创 2020-09-22 12:11:56 · 235 阅读 · 0 评论 -
第 3-8 课:Spring Data JPA 和 Thymeleaf 综合实践
在前面课程中,我们学习了 Spring Boot Web 开发、JPA 数据库操作、Thymeleaf 和页面交互技术,这节课综合这些内容做一个用户管理功能,包括展示用户列表(分页)、添加用户、修改用户和删除用户。有人说程序员的一生都是在增、删、改、查,这句话不一定全对,但也有一定的道理,相比于这句话,我更认同的是这句:程序员的技术学习都是从增、删、改、查开始的。这节课将介绍如何使用 JPA 和...原创 2020-09-22 12:11:55 · 249 阅读 · 0 评论 -
第 4-1 课:Spring Boot 操作 Memcache
《精通 Spring Boot 42 讲》共分五大部分,第四部分主要讲解 Spring Boot 和中间件的使用,共 10 课,中间件是互联网公司支撑高并发业务的必备组件,常用的组件有缓存、消息中间件、NoSQL 数据库、定时任务等。常用的缓存中间件有 Memcache 和 Redis ,缓存主要支撑业务架构中高速读写;常用的消息中间件有 ActiveMQ 、RabbitMQ ,使用消息中间...原创 2020-09-22 12:11:53 · 274 阅读 · 0 评论 -
第 4-2 课:Spring Boot 和 Redis 常用操作
Redis 是目前使用最广泛的缓存中间件,相比 Memcached,Redis 支持更多的数据结构和更丰富的数据操作,另外 Redis 有着丰富的集群方案和使用场景,这一课我们一起学习 Redis 的常用操作。Redis 介绍Redis 是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与 5 种不同类型的值(Value)之间的映射(Map...原创 2020-09-22 12:11:51 · 218 阅读 · 0 评论 -
第 4-3 课:使用 Redis 实现 Session 共享
在微服务架构中,往往由多个微服务共同支撑前端请求,如果涉及到用户状态就需要考虑分布式 Session 管理问题,比如用户登录请求分发在服务器 A,用户购买请求分发到了服务器 B, 那么服务器就必须可以获取到用户的登录信息,否则就会影响正常交易。因此,在分布式架构或微服务架构下,必须保证一个应用服务器上保存 Session 后,其他应用服务器可以同步或共享这个 Session。目前主流的分布式 S...原创 2020-09-22 12:11:50 · 256 阅读 · 0 评论 -
第 4-4 课:Spring Boot 中使用 Cache 缓存的使用
我们知道绝大多数的网站/系统,最先遇到的一个性能瓶颈就是数据库,使用缓存做数据库的前置缓存,可以非常有效地降低数据库的压力,从而提升整个系统的响应效率和并发量。以往使用缓存时,通常创建好缓存工具类,使用时将对应的工具类注入,操作工具类在前端处理缓存的逻辑。其实这种方式是低效的,大部分使用缓存的场景是基于数据库的缓存,这类缓存场景的逻辑往往是:如果缓存中存在数据,就从缓存中读取,如果缓存中不存在数...原创 2020-09-22 12:11:48 · 301 阅读 · 0 评论 -
第 4-5 课:使用 Spring Boot 操作 ActiveMQ
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。目前在生产环境中使用较多的消息队列有 ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ 等。特性异步性:将耗时的同步操作通过以发送消息的方式进行了异步化处理,减少了同步等待的时间。 ...原创 2020-09-22 12:11:47 · 207 阅读 · 0 评论 -
第 4-6 课:Spring Boot RabbitMQ 详解
RabbitMQ 介绍AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ 是一个开源的 AMQP 实现,服务器端用...原创 2020-09-22 12:11:45 · 346 阅读 · 0 评论 -
第 4-7 课:Spring Boot 简单集成 MongoDB
MongoDB 如今是最流行的 NoSQL 数据库,被广泛应用于各行各业中,很多创业公司数据库选型就直接使用了 MongoDB,但对于大部分公司,使用 MongoDB 的场景是做大规模数据查询和离线分析。MongoDB 一经推出就受到了广大社区的热爱,可以说是对程序员最友好的一种数据库,下面我们来了解一下它的特性。MongoDB 简介MongoDB(Humongous,庞大)是可以应用于各种规...原创 2020-09-22 12:11:44 · 259 阅读 · 0 评论 -
第 4-8 课:Spring Boot 集成 ElasticSearch
ElasticSearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有。ElasticSearch 使用 Java 编写的,它的内部使用的是 Lucene 做索引与搜索,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之提供了一套简单一致的 RE...原创 2020-09-22 12:11:42 · 301 阅读 · 0 评论 -
第 4-9 课:Spring Boot 集成 Quartz
在项目开发中,经常需要定时任务来帮助我们来做一些内容,比如定时派息、跑批对账、业务监控等。Spring Boot 体系中现在有两种方案可以选择,第一种是 Spring Boot 内置的方式简单注解就可以使用,当然如果需要更复杂的应用场景还是得 Quartz 上场,Quartz 目前是 Java 体系中最完善的定时方案。首先来看看 Spring Boot 自带的定时方案。Spring Boot ...原创 2020-09-22 12:11:41 · 247 阅读 · 0 评论 -
第 4-10 课:使用 Spring Boot 开发邮件系统
电子邮件是在因特网上使用的非常多的一种应用,它可以非常方便的让相隔很远的人进行通信,主要特点是操作简单、快捷。现在的电子邮件系统是以存储与转发的模型为基础,邮件服务器接收、转发、提交及存储邮件,寄信人、收信人及他们的计算机都不用同时在线,寄信人和收信人只需在寄信或收信时简短的连线到邮件服务器即可。互联网发展到现在,邮件服务已经成为互联网企业中必备功能之一,应用场景非常广泛,比较常见的有:用户注册...原创 2020-09-22 12:11:39 · 526 阅读 · 0 评论 -
第 5-1 课:使用 Spring Boot Security 进行安全控制
《精通 Spring Boot 42 讲》共分五大部分,这是最后一部分的内容了,主要包含安全、测试、部署、监控及综合实践。对于安全访问控制主要讲解 Spring Boot Security 的使用;监控主要使用 Spring Boot Actuator 和 Spring Boot Admin,在实际的生产应用中这两个组件非常实用;Spring Boot 对测试的支持是全面的,这一部分将会对其...原创 2020-09-22 12:11:37 · 258 阅读 · 0 评论 -
第 5-2 课:使用 Spring Boot Actuator 监控应用
微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现异常如何快速定位便成为了一个问题,在这种框架下微服务的监控显得尤为重要。Spring Boot 是一个自带监控的开源框架,组件 Spring Boot Actuator 负责监控应用的各项静态和动态的变量。项目结合 Spring Boot ...原创 2020-09-22 12:11:36 · 196 阅读 · 0 评论 -
第 5-3 课: Spring Boot Admin 的使用
Spring Boot Actuator 提供了对单个 Spring Boot 应用的监控,信息包含应用状态、内存、线程、堆栈等,比较全面的监控了 Spring Boot 应用的整个生命周期。但是这样监控也有一些问题:第一,所有的监控都需要调用固定的接口来查看,如果全面查看应用状态需要调用很多接口,并且接口返回的 JSON 信息不方便运营人员理解;第二,如果 Spring Boot 应用集群非常...原创 2020-09-22 12:11:34 · 458 阅读 · 0 评论 -
第 5-4 课: Spring Boot 对测试的支持
在微服务架构下,整个系统被切割为 N 个独立的微服务相互配合来使用,那么对于系统可用性会有更高的要求。从大到小可以分为三个层级,开发人员编码需要做的单元测试、微服务和微服务之间的接口联调测试、微服务和微服务之间的集成测试,通过三层的严格测试才能有效保证系统的稳定性。作为一名开发人员,严格做好代码的单元测试才是保证软件质量的第一步。Spring Boot 做为一个优秀的开源框架合集对测试的支持非常...原创 2020-09-22 12:11:32 · 202 阅读 · 0 评论 -
第 5-5 课: 如何打包部署 Spring Boot 项目
Spring Boot 使用了内嵌容器,因此它的部署方式也变得非常简单灵活,一方面可以将 Spring Boot 项目打包成独立的 Jar 或者 War 包来运行,也可以单独打包成 War 包部署到 Tomcat 容器中运行,如果涉及到大规模的部署 Jinkins 就成为最佳选择之一。Spring Boot 默认集成 Web 容器,启动方式和普通 Java 程序一样,main 函数入口启动,其内...原创 2020-09-22 12:11:30 · 223 阅读 · 0 评论