【推荐图书】深入浅出Spring Boot 3.x

推荐原因

这部SpringBoot3.x经典之作,时隔六年迎来重磅升级!
适合java开发相关读者
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

购买链接

商品链接:https://item.jd.com/14600442.html

介绍

书名:深入浅出Spring Boot 3.x
ISBN:978-7-115-63282-1/
作者:杨开振
定价:129.8元
开本:16开
装帧:平装
页数:450页
上架建议:
出版社:人民邮电出版社
入库时间:2024年3月

◆ 关键词◆
Spring Boot 3.x// Spring 6.x//Java//Jakarta EE//Axios//Docker//容器//企业级微服务//Spring Cloud Alibaba

◆目标读者 ◆(读者对象)
本书适合Java开发人员,尤其是需要初学Spring Boot的人员和从传统Spring转向Spring Boot开发的技术人员阅读。

◆卖点信息/编辑推荐 ◆
·《深入浅出Spring Boot 2.x》时隔5年的全面更新;
·来自一线开发者的实战经验总结,全方位讲解Spring Boot 3.x企业级开发
·采用Java 8之后的新语法和新技术,全面讲解Spring Boot 3.x;
·从理论到实践,全面介绍Spring Boot 3.x的原理和应用;
·紧扣互联网企业的实际需求,追上微服务和云服务的潮流。

在互联网世界中,分布式已经是一种必然的趋势,而在分布式架构中,微服务架构已成为当前的主流。Spring Boot作为业界流行的微服务开发框架,也渐渐成为企业级开发的主流选择。
Spring Boot 3.x正式版于2022年11月推出。本书在《深入浅出Spring Boot 2.x》的基础上进行全新升级,全面讲解Spring Boot 3.x技术,从开发环境的搭建入手,讲解全注解下的Spring IoC和Spring AOP、数据库编程(JPA、MyBatis和JDBC)、数据库事务、NoSQL数据库(Redis和MongoDB)技术、Spring MVC、REST风格、互联网抢购业务、监控与容器部署、Spring Cloud Alibaba微服务开发等内容,从而帮助读者掌握Spring Boot企业级开发的要点。
本书采用Java 8之后的新语法,涵盖从理论到互联网微服务后端的实践,无论是Java互联网后端开发人员,还是从传统Spring项目转向Spring Boot的开发人员,抑或是Java微服务开发人员,都可以从本书中获益。

◆ 拓展书名 ◆
《深入浅出Spring Boot 2.x》时隔5年的全面更新,深入浅出Spring Boot 3实战精髓,企业级应用开发实战指南

◆ 内容简介 ◆
Spring框架是Java EE开发的强有力的工具和事实标准,而Spring Boot采用“约定优于配置”的原则简化 Spring的开发,成为业界最流行的微服务开发框架,被越来越多的企业采用。为了适应新潮流,本书对Spring Boot 3.x技术进行深入讲解。
本书从一个最简单的项目开始讲解Spring Boot企业级开发,其内容包含全注解下的Spring IoC和Spring AOP、数据库编程(JPA、MyBatis和JDBC)、数据库事务、NoSQL数据库(Redis和MongoDB)技术、Spring MVC、REST风格、互联网抢购业务、监控与容器部署、Spring Cloud Alibaba微服务开发等。
本书内容紧扣互联网企业的实际需求,从全注解下的Spring知识讲到Spring Boot的企业级开发,对于Java开发者,尤其是初学Spring Boot的人员和需要从传统Spring转向Spring Boot开发的技术人员,具有很高的参考价值。

◆ 作者简介 ◆
杨开振
精通Java互联网技术,拥有十余年企业级应用开发经验,著有畅销书《深入浅出Spring Boot 2.x》《Spring Cloud微服务和分布式系统实践》《对照Excel,零基础学Python数据分析》《深入浅出MyBatis技术原理与实战》和《Java EE互联网轻量级框架整合开发——SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》。

◆ 名人推荐 ◆(书评)

梁华辉,资深Java系统架构师
本书章节编排合理,深入浅出地阐述了Spring Boot 3.x的原理与应用,以及当今流行的微服务架构Spring Cloud Alibaba,内容通俗易懂。本书以互联网常见的高并发场景作为实践案例,在同类图书中更是难得一见。Java工程师、架构师一定不能错过本书。

谭茂华,高级Java软件架构师
本书从原理到实践,详细介绍了Spring Boot 3.x的方方面面,并介绍了Spring Cloud Alibaba微服务架构。无论你是Java新手,还是Spring老兵,本书都是非常值得一读的。

彭俊雄,支付平台资深专家
本书实用性较强,生动形象地展示了Spring Boot 3.x的特性。本书结合当前的企业发展趋势,从企业需求出发,把技能赋予人才,把人才赋予企业。

刘家成,资深Java开发工程师
Java程序员每天都要使用的Spring Boot 3.x里程碑新鲜出炉!本书全面、详细地介绍了Spring Boot的新特性、优化点和最佳实践,从高级抽象到具体代码,让你从容不迫面对新技术浪潮。

王江平,Java架构工程师
本书全面拥抱Java 17、Jakarta EE 9、Spring 6.x和Spring Boot 3.x等新技术,包含深入的原理讲解和大量代码示例,深入浅出地讲解Spring Boot 3.x的核心理念和高级特性。同时,新增的预先编译(AOT)和Docker容器部署技术更加贴近企业级应用场景,对想要快速掌握Spring Boot 3.x的读者具有很强的参考价值。

◆ 前言 ◆

当前互联网后端开发中,Java技术占据了主导地位。对于Java开发,首选框架和事实标准是Spring框架。传统的Spring开发需要使用大量的XML配置才能使Spring框架运行起来,这备受许多开发者诟病。随着Spring 4.x的发布,Spring已经完全脱离XML,只使用注解就可以运行项目。在最近几年里,互联网世界掀起了微服务热潮。微服务会将一个大的单体系统按照业务拆分为独立的系统,然后通过REST风格的请求将它们集成起来,进一步简化了分布式系统的开发。为了进一步简化Spring的开发,Spring Boot于2014年诞生了,这是一个由Pivotal团队提供的全新框架,其设计目的是简化Spring应用的搭建以及开发过程,并迎合时下流行的微服务思维,越来越多的企业选择了Spring Boot。随着2017年9月Spring 5.x的推出,2018年Spring Boot也推出了2.x版本,至此Spring Boot成为Java开发的首选。为了顺应潮流,2018年我创作了《深入浅出Spring Boot 2.x》(下文简称为2.x版),此书一经推出,就成为该领域的主流图书。不过,随着Spring Boot的不断升级,2.x版的许多知识点已经过时,所以是时候对其进行升级改版了,这就是本书的缘起。
2017年甲骨文公司正式放弃Java EE,并将其交由Eclipse基金会托管。因为版权问题,Java EE这个名称不能被沿用,于是2018年Eclipse基金会将Java EE正式改名为Jakarta EE。Jakarta EE逐渐发展为主流技术,为此Spring推出了第6版,对Jakarta EE 9进行支持,而Pivotal团队在2022年11月推出了Spring Boot 3.x正式版。于是,我决定在2.x版的基础上进行升级,讲解Spring Boot 3.x。
Spring Boot采用“约定优于配置”的规则,大部分情况下依赖它提供的starter,就可以使用默认的约定,然后通过属性文件能减少大量的代码,使开发更为简单;对于打包,Spring Boot提供了内嵌服务器和Maven(或Gradle),进一步降低了企业部署的难度;对于测试,Spring Boot提供了快速测试的环境,进一步提高了测试效率;Spring Boot还提供了监控功能,使得开发者能及时把握项目运行的健康情况。在互联网世界中,分布式已经是一种必然的趋势,而在分布式架构中,微服务架构已成为当前的主流,因此Spring Boot渐渐成为企业级开发的主流选择。但是,微服务架构所需的服务治理和相关组件的研发成本并非一般公司所能承担的,因此Spring社区还将许多微服务组件通过Spring Boot的形式封装起来,发布给大家使用,这进一步简化了企业级微服务的开发。这样,Spring Boot和Spring Cloud都站到了互联网后端开发的主流方向上。对于我国主要的微服务架构选型——Spring Cloud Alibaba,本书也会进行探讨。
随着微服务和云服务的流行,Java很多原有的优势已经不是那么突出了,甚至Java和Spring Boot 2.x原有的一些优势反倒成了累赘。我们之所以选择Spring Boot 3.x,是因为它提供了两大好处。
一是拥抱最新技术。随着时代的发展,Jakarta EE渐渐取代Java EE成为主流技术,Java 8的语法也已经严重落后于其他计算机编程语言。Spring Boot 3.x只支持Java 17及以上版本,而Java 17作为当前长期支持版本,容纳了许多新的语法,简化了开发,十分值得学习,毕竟Java 8臃肿的语法已经很难支撑项目的快速开发以及系统开发的不断迭代和交付了。
二是需要追上微服务和云服务的潮流。随着微服务和云服务的发展,越来越多的企业使用容器进行开发、测试和部署等工作。而容器的使用使得“Build once, Run anywhere”(一次构建,到处运行)成为现实,这使得Java最大的优势——“Write once, Run anywhere”(一次编写,到处运行)大大削弱了,因为计算机语言的平台无关性已经不是一个巨大的优势了。传统Java采用的是Java虚拟机解释字节码的运行模式,在微服务和云服务中,会造成两个难以解决的问题。
● Java虚拟机解释运行程序的速度太慢。这体现在启动、部署和运行上,采用云原生文件,程序可以是毫秒级启动项目,而采用Java虚拟机后,程序只能是秒级启动项目。Java虚拟机在云服务或者微服务中性能偏慢,而采用云原生文件后,可以获得很大的性能提升。这些问题在单体系统的时代并非大问题,但是在容器化的微服务和云服务时代则被开发者所诟病,因为这不利于容器的使用。
● 镜像太大,难以管理。传统Java项目需要使用Java虚拟机来运行,同时也依赖大量的第三方包,制作成为容器的镜像太大,不利于运维环节对镜像的管理。在我的测试中,只是制作一个简单的Spring Boot项目的镜像,文件大小居然达到了490 MB。大的镜像不仅占据的空间大,还会使镜像构建、部署的时间变长,运行也会变慢。
针对这两个问题,Spring Boot 3.x开始支持预先编译技术,这是一种可以将项目在运行前直接编译为二进制文件或者机器码文件的技术,这样编译出来的文件就是云原生文件了。操作系统可以直接运行编译出来的文件,且性能比传统Java虚拟机解释的运行方式要好很多。Spring Boot 3.x的预先编译技术主要采用的是甲骨文提供的GraalVM,使用它生成的云原生文件不仅可以在操作系统直接运行,性能也更佳,制作出来的容器镜像也比传统Java镜像小得多。虽然当前GraalVM技术还不够完善,且未得到广泛使用,但它是Java未来的重要发展方向之一。
Spring Boot不是要代替Spring,而是使Spring项目可以更加快速地开发、测试和部署。它采用“约定优于配置”的理念,在内部提供大量的starter,而这些starter又提供许多自动配置类,让开发者可以奉行“拿来主义”,开箱即用。虽然这样能够快速地开发、测试和部署,但是也会带来很大的问题,那就是,如果不懂Spring的原理,一旦出现开发问题,开发者就很容易陷入困境,难以找到问题的根源,产生困扰。因此,学习Spring Boot必须掌握Spring的基础知识。基于这种情况,本书结合Spring的原理讨论Spring Boot的应用。
为了更好地讨论Spring Boot的相关知识,本书内容安排如下。

目录

● 第1章和第2章讲解Spring Boot和传统Spring开发的区别,以及如何搭建Spring Boot开发环境。
● 第3章和第4章讨论在全注解下的Spring基础IoC和AOP,让初学者可以无缝对接Spring Boot的全注解开发方式。
● 第5章和第6章讲解数据库的开发、基于SSM框架(Spring MVC+Spring+MyBatis)的流行以及数据库事务的重要性,除了讨论传统的JDBC和JPA开发,还会重点讨论和MyBatis框架的整合,以及Spring数据库事务的编程。
● 第7章和第8章主要讲解互联网中广泛使用的两种NoSQL数据库(即Redis和MongoDB),使用它们可以极大地提高系统的性能。
● 第9章至第12章主要讲解Spring Boot下的Spring MVC的各种应用。第9章初识Spring MVC,概述Spring MVC的全流程和常见的组件;第10章深入Spring MVC的开发和应用,让读者能够掌握各种Spring Web后端的开发技巧;第11章讲解如何构建REST风格的网站,因为当前各个微服务是以REST风格请求相互融合的,所以时下它已经成为一种广泛使用的风格;第12章讲解Spring Security,通过它可以保护我们的站点,使其远离各种各样的攻击,保证网站安全。
● 第13章讲解一些Spring常用的技术,如异步线程池、异步消息和定时器等,以满足企业的其他开发需要。
● 第14章讲解Spring Boot下的SSM框架(Spring MVC+Spring+MyBatis)整合,并通过抢购业务讲述互联网中的高并发与锁的应用。
● 第15章讲解Spring Boot的打包、测试、监控、预先编译和Docker容器部署技术。
● 第16章讲解基于Spring Cloud Alibaba的微服务开发,带领读者学习国内流行的微服务架构的开发。
上述内容可以让读者对Spring Boot有深入的了解,并且通过进一步学习掌握企业级应用的开发技巧。
阅读本书前,读者需要具备Java编程语言基础、Jakarta EE(Servlet和JSP)基础、前端(HTML、JavaScript和Vue)基础和数据库(MySQL、Redis和MongoDB)基础。当然读者也可以根据自己感兴趣的技术选择部分章节来学习。
本书从Spring Boot 3.x的维度全面讲解Spring基础技术(IoC和AOP)、数据访问技术、Web技术和微服务架构等,因此本书适合以下读者。
● 使用或者即将使用Spring Boot开发的人员。
● 需要从传统Spring开发转向Spring Boot开发的人员。
● 需要使用Spring Cloud开发微服务架构的人员。
● 需要了解和学习企业级Jakarta EE开发的在校师生。从这个角度来说,本书也适合作为大中专院校的教材。
通过对本书的学习,读者可以有效地提高自身的技术能力,并能将这些技术应用于实际学习和工作当中。当然,读者也可以把本书当作工作手册来查阅。
● 全面拥抱最新且被长时间支持的技术,包括Java 17、Jakarta EE 9、Spring 6.x和Spring Boot 3.x等。
● 在前端技术上,删除2.x版采用的JQuery(当前已经很少用了),采用流行的前端框架Vue推荐使用的Axios。
● 使用IntelliJ IDEA作为开发默认的IDE,而非2.x版的Eclipse。
● 增加预先编译和Docker容器部署技术的讲解,更贴近企业级微服务的应用。
● 在微服务章节,剔除2.x版中过时的Spring Cloud NetFlix,拥抱目前国内流行的Spring Cloud Alibaba。
● 在2.x版的基础上,进一步完善代码样例和技术细节。
为了帮助读者更好地阅读本书,本书对以下内容进行约定。
(1)时间长度单位采用英文简写,具体为h-时、m-分、s-秒、ms-毫秒、ns-纳秒。
(2)省略import语句和Java Bean的setter与getter方法,如下:
package com.learn.chapter7.pojo;
@Alias(“user”)
public class User implements Serializable {
private static final long serialVersionUID = 7760614561073458247L;
private Long id;
private String userName;
private String note;

}
代码①处省略import语句,而代码②处省略Java Bean的setter()与getter()方法。
Spring Boot作为一个被高度关注的微服务开发框架,版本迭代十分频繁。本书尽可能采用最新版本,于是最终选定的Spring Boot版本是3.0.6。Spring Boot 3.x支持JDK 17及以上版本,支持Jakarta EE 9,并尽量兼容Jakarta EE 10,这些是读者在阅读本书和实践的过程中需要注意的。
本书得以顺利出版要感谢人民邮电出版社的编辑们,尤其是刘雅思编辑,她以编辑的专业精神时常鞭策我,并给予我很多建议、帮助和支持,没有编辑的付出就不会有本书的出版。
感谢我的家人对我的支持和理解,我在电脑桌前写作时,牺牲了很多本该好好陪伴他们的时光。
Spring和Spring Boot技术的使用面和涉及面十分广泛,版本更替也十分频繁,加上本人能力有限,所以书中错误之处在所难免。但是,正如没有完美的技术一样,也没有完美的书籍。尊敬的读者,如果你对本书有任何意见或建议,欢迎给我发送邮件(ykzhen2013@163.com),或者在我的CSDN博客上留言(搜索用户ykzhen2015),以便于及时修订本书的错漏。
为了更好地帮助读者学习和理解本书内容,本书还免费提供源代码下载,相关信息会发布到异步社区(https://www.epubit.com)和作者博客上,欢迎读者关注。

◆ 目录 ◆
第1章 Spring Boot 3.x的来临 1
1.1 Spring框架的历史 1
1.2 Spring Boot的特点 3
1.3 Spring和Spring Boot的关系 4
1.4 开发Spring Boot项目 4

第2章 聊聊开发环境搭建和基本开发 8
2.1 搭建Spring Boot开发环境 8
2.1.1 搭建Eclipse开发环境 8
2.1.2 搭建IntelliJ IDEA开发环境 11
2.2 使用自定义配置 13
2.3 开发自己的Spring Boot项目 14

第3章 全注解下的Spring IoC 16
3.1 IoC容器简介 16
3.2 装配你的Bean 20
3.2.1 通过扫描装配你的Bean 20
3.2.2 自定义第三方Bean 25
3.3 依赖注入 26
3.3.1 注解@Autowired 27
3.3.2 消除歧义性—@Primary和@Qualifier 29
3.3.3 带有参数的构造方法类的装配 29
3.4 生命周期 30
3.5 使用属性文件 36
3.6 条件装配Bean 39
3.7 Bean的作用域 40
3.8 使用注解@Profile 42
3.9 使用Sp EL 43

第4章 开始约定编程—Spring AOP 46
4.1 约定编程 46
4.1.1 约定 46
4.1.2 ProxyBean的实现 51
4.2 AOP的知识 54
4.2.1 为什么要使用AOP 54
4.2.2 AOP的术语和流程 57
4.3 AOP开发详解 59
4.3.1 确定拦截目标 59
4.3.2 开发切面 59
4.3.3 定义切点 60
4.3.4 测试AOP 62
4.3.5 环绕通知 64
4.3.6 引入 65
4.3.7 通知获取参数 67
4.3.8 织入 68
4.4 多个切面 68

第5章 访问数据库 73
5.1 配置数据源 74
5.1.1 配置默认数据源 74
5.1.2 配置自定义数据源 74
5.2 使用JdbcTemplate操作数据库 78
5.3 使用JPA(Hibernate)操作数据库 81
5.3.1 概述 81
5.3.2 开发JPA 82
5.4 整合MyBatis框架 87
5.4.1 MyBatis简介 87
5.4.2 MyBatis的配置 88
5.4.3 Spring Boot整合MyBatis 92
5.4.4 MyBatis的其他配置 95

第6章 聊聊数据库事务处理 97
6.1 JDBC的数据库事务 98
6.2 Spring声明式事务的使用 100
6.2.1 Spring声明式事务约定 100
6.2.2 注解@Transactional的配置项 101
6.2.3 Spring事务管理器 103
6.2.4 测试数据库事务 105
6.3 隔离级别 109
6.3.1 数据库事务的要素 109
6.3.2 详解隔离级别 110
6.4 传播行为 114
6.4.1 传播行为 115
6.4.2 测试传播行为 116
6.4.3 事务状态 121
6.5 Spring数据库事务实战 122
6.5.1 准确启用Spring数据库事务 122
6.5.2 占用事务时间过长 123
6.5.3 @Transactional自调用失效问题 123

第7章 使用性能利器—Redis 128
7.1 spring-data-redis项目简介 129
7.1.1 spring-data-redis项目的设计 129
7.1.2 RedisTemplate和StringRedisTemplate 131
7.1.3 Spring对Redis数据类型操作的封装 134
7.1.4 SessionCallback和RedisCallback接口 135
7.2 在Spring Boot中配置和操作Redis 136
7.2.1 在Spring Boot中配置Redis 136
7.2.2 操作Redis数据类型 137
7.3 Redis的一些特殊用法 141
7.3.1 使用Redis事务 141
7.3.2 使用Redis流水线 143
7.3.3 使用Redis发布/订阅 144
7.3.4 使用Lua脚本 147
7.4 使用Spring缓存注解操作Redis 150
7.4.1 缓存管理器和缓存的启用 150
7.4.2 开发缓存注解 151
7.4.3 测试缓存注解 156
7.4.4 缓存注解自调用失效问题 158
7.4.5 缓存脏数据说明 159
7.4.6 自定义缓存管理器 160

第8章 文档数据库—MongoDB 162
8.1 配置MongoDB 163
8.2 使用MongoTemplate实例 164
8.2.1 准备MongoDB的文档 164
8.2.2 使用MongoTemplate操作文档 165
8.3 使用JPA 170
8.3.1 基本用法 170
8.3.2 使用自定义查询 172

第9章 初识Spring MVC 175
9.1 Spring MVC框架的设计 176
9.2 Spring MVC流程 176
9.3 定制Spring MVC的初始化 182
9.4 Spring MVC实例 184
9.4.1 开发控制器 184
9.4.2 视图和视图渲染 185

第10章 深入Spring MVC开发 188
10.1 处理器映射 188
10.2 获取控制器参数 189
10.2.1 在无注解的情况下获取参数 190
10.2.2 使用@RequestParam获取参数 190
10.2.3 传递数组 191
10.2.4 传递JSON数据集 191
10.2.5 通过URL传递参数 194
10.2.6 获取格式化参数 195
10.3 自定义参数转换规则 196
10.3.1 处理器转换参数逻辑 197
10.3.2 一对一转换器 200
10.3.3 GenericConverter集合和数组转换 202
10.4 数据验证 202
10.4.1 JSR-303验证 202
10.4.2 参数验证机制 205
10.5 数据模型 208
10.6 视图和视图解析器 210
10.6.1 视图设计 210
10.6.2 视图实例—导出Excel文档 212
10.7 文件上传 214
10.7.1 文件上传的配置项 214
10.7.2 开发文件上传功能 215
10.8 拦截器 218
10.8.1 设计拦截器 218
10.8.2 开发拦截器 219
10.8.3 多个拦截器方法的运行顺序 221
10.9 国际化 224
10.9.1 国际化消息源 224
10.9.2 国际化解析器 225
10.9.3 国际化实例—SessionLocaleResolver 227
10.10 Spring MVC拾遗 230
10.10.1 @ResponseBody转换为JSON的秘密 230
10.10.2 重定向 231
10.10.3 操作会话属性 233
10.10.4 给控制器增加通知 235
10.10.5 获取请求头参数 237

第11章 构建REST风格网站 240
11.1 REST简述 240
11.1.1 REST名词解释 240
11.1.2 HTTP的动作 241
11.1.3 REST风格的一些误区 242
11.2 使用Spring MVC开发REST风格端点 242
11.2.1 Spring MVC整合REST 242
11.2.2 使用Spring开发REST风格的端点 243
11.2.3 使用@RestController 251
11.2.4 渲染结果 252
11.2.5 处理HTTP状态码、响应头和异常 254
11.3 客户端请求RestTemplate 257
11.3.1 使用RestTemplate请求后端 258
11.3.2 获取状态码和响应头 261
11.3.3 定制请求体和响应类型 262

第12章 安全—Spring Security 264
12.1 概述和简单安全验证 264
12.1.1 使用用户密码登录系统 265
12.1.2 Spring Security的配置项 266
12.1.3 开发Spring Security的主要的类 266
12.2 使用UserDetailsService接口定制用户信息 267
12.2.1 使用内存保存用户信息 267
12.2.2 从数据库中读取用户信息 268
12.2.3 使用自定义UserDetailsService对象 270
12.2.4 密码编码器 270
12.3 限制请求 271
12.3.1 配置请求路径访问权限 272
12.3.2 自定义验证方法 274
12.3.3 不拦截的请求 275
12.3.4 防止跨站点请求伪造 275
12.4 登录和登出设置 277
12.4.1 自定义登录页面 277
12.4.2 启用HTTP Basic验证 279
12.4.3 登出配置 279

第13章 学点Spring其他的技术 282
13.1 异步线程池 282
13.1.1 定义线程池和开启异步可用 283
13.1.2 异步实例 284
13.2 异步消息—RabbitMQ 285
13.3 定时任务 289

第14章 实践一下—抢购商品 293
14.1 设计与开发 293
14.1.1 数据库表设计 293
14.1.2 使用MyBatis开发持久层 294
14.1.3 使用Spring开发业务层和控制层 297
14.1.4 测试和配置 299
14.2 高并发开发 301
14.2.1 超发现象 301
14.2.2 悲观锁 303
14.2.3 乐观锁 304

第15章 打包、测试、监控、预先编译和容器部署 310
15.1 打包和运行 310
15.1.1 打包项目 310
15.1.2 运行项目 311
15.1.3 热部署 314
15.2 测试 315
15.2.1 构建测试类 316
15.2.2 使用随机端口和REST风格测试 317
15.2.3 Mock测试 317
15.3 Actuator监控端点 319
15.4 HTTP监控 320
15.4.1 查看敏感信息 321
15.4.2 shutdown端点 323
15.4.3 配置端点 324
15.4.4 自定义端点 326
15.4.5 健康指标项 328
15.5 JMX监控 331
15.6 预先编译 332
15.6.1 搭建GraalVM环境 333
15.6.2 创建项目 335
15.6.3 生成和运行原生文件 336
15.7 部署到Docker容器中 337

第16章 Spring Cloud Alibaba微服务开发 339
16.1 服务治理—Alibaba Nacos 342
16.1.1 下载、安装、配置和启动Nacos 342
16.1.2 服务发现 343
16.1.3 搭建Nacos集群 350
16.2 服务调用 352
16.2.1 客户端负载均衡 353
16.2.2 OpenFeign声明式服务调用 356
16.3 容错机制—Spring Cloud Alibaba Sentinel 359
16.3.1 设置埋点 360
16.3.2 Sentinel控制台 361
16.3.3 流控 363
16.3.4 熔断 364
16.3.5 在OpenFeign中使用Sentinel 371
16.4 API网关—Spring Cloud Gateway 372
16.4.1 Gateway的工作原理 374
16.4.2 配置路由规则 375
16.4.3 过滤器 376
16.4.4 使用Sentinel管控Gateway 383

附录 Spring Boot知识点补充 387
A.1 Java 8和之后版本的新语法 387
A.1.1 Lambda表达式 387
A.1.2 本地变量类型推断 387
A.1.3 switch语句的改善 388
A.1.4 文本块 388
A.1.5 紧凑声明类的关键字record 389
A.1.6 instanceof语法的改善 390
A.2 选择内嵌服务器 391
A.3 修改商标 391

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「ETL趋势」分区支持PostgreSQL、Greenplum、Gauss200, 定时任务支持Kettle

FineDataLink作为一款市场上的顶尖ETL工具,集实时数据同步、ELT/ETL数据处理、数据服务和系统管理于一体的数据集成工具,进行了新的维护迭代。本文把FDL4.1.9最新功能作了介绍,方便大家对比:(产品更新详情:…

【国产开源可视化引擎Meta2d.js】钢笔

钢笔 钢笔是和其他众多绘图工具(Photoshop、Sketch、Illustrator)中一致的钢笔工具,能够很方便的在线绘制各种小图标 在线体验: 乐吾乐2D可视化 示例: // 开始绘画:curve。除了curve,还有poly…

上位机图像处理和嵌入式模块部署(mcu项目1:用户手册)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 一个完整的产品,除了上位机软件、固件、硬件、包装之外,一般还需要一个用户手册。好的用户手册应该能够兼顾到大多数人的认…

力扣(3200)- 三角形的最大高度

好方法: 垃圾方法:

吉洪诺夫正则化随笔

前言 前几天在回顾压缩感知中的特征选择与LASSO回归发现了这个Tikhonov regularization,查了一下叫个如题的名字。先来浅说一下正则化这玩意:正则化(Regularization)是一种用来防止模型过拟合(Overfitting&#xff09…

孙溟㠭篆刻《睡片原谅一切,醒来不问过往》

孙溟㠭篆刻《睡片原谅一切,醒来不问过往》 佛陀言:睡前原谅一切,醒来不问过往,珍惜所有不期而遇,看淡所有不辞而别甲辰夏溟㠭于寒舍小窗下刊。

相关向量机RVM算法介绍继承sklearn-SVM-API实现回归预测算例

一、相关向量机RVM与支持向量机SVM对比 1、相关向量机(RVM) ①定义与原理 相关向量机(Relevance Vector Machine, RVM)是一种基于概率模型的机器学习算法,主要用于分类和回归分析。基于稀疏贝叶斯学习框架&#xff…

Springboot助农农产品销售系统-计算机毕业设计源码16718

摘要 SpringBoot助农农产品销售系统旨在通过利用SpringBoot框架开发一个便捷高效的农产品销售平台。该系统包括用户注册登录、商品浏览、购物车管理、订单生成、支付功能等模块。通过整合支付接口、地图定位、推荐系统等技术,提供给用户更好的购物体验。本文介绍了…

Docker安装遇到问题:curl: (7) Failed to connect to download.docker.com port 443: 拒绝连接

问题描述 首先,完全按照Docker官方文档进行安装: Install Docker Engine on Ubuntu | Docker Docs 在第1步:Set up Dockers apt repository,执行如下指令: sudo curl -fsSL https://download.docker.com/linux/ubu…

人工智能开发中的数据隐私

人工智能开发中的数据隐私对于建立用户信任和遵守严格法规至关重要。保护敏感信息可确保合乎道德的人工智能使用并防止有害的数据泄露。 为什么在人工智能开发中优先考虑数据隐私至关重要 人工智能的迅猛发展开启了一个前所未有的技术进步时代,彻底改变了各行各业&…

使用Python绘制双向条形图

使用Python绘制双向条形图 双向条形图效果代码 双向条形图 双向条形图用于比较两个类别的数值分布,条形在中轴线两侧对称排列。这种图表常用于显示两个变量的对比情况,例如男女不同年龄段人口数量对比。 效果 代码 import matplotlib.pyplot as plt i…

Shopee(虾皮)怎么获取流量?

店铺流量的高低会直接关联到卖家店铺单量,也关系到一个店铺的营业情况和利润,那么Shopee的流量从哪里来呢? Shopee的平台流量可分为五个部分: 1.自然流量 2.关键字广告流量 3.平台活动流量 4.营销流量 5.粉丝流量 怎么提升…

【C语言小知识】getchar与putchar

getchar与putchar getchar介绍putchar介绍总结 在学习c语言阶段存在着许多要求输入数值的例子,在输入字符时,如果使用scanf()和printf()根据%c转换说明读写字符,接下来介绍一堆字符输入/输出函数:getchar()和putchar()。 getchar…

Andriod安装termux并换源

问题汇总 Error: The repository ‘https://mirrors.tuna.tsinghua.edu.cn/termux/termux-package-24 stable Release’ does not have a Release file. 更换源(这里使用的是清华大学源) 打开文件 nano $PREFIX/etc/apt/sources.list手动修改 deb htt…

ssm“落雪”动漫网站-计算机毕业设计源码81664

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据新增流程 3.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…

Golang | Leetcode Golang题解之第217题存在重复元素

题目: 题解: func containsDuplicate(nums []int) bool {set : map[int]struct{}{}for _, v : range nums {if _, has : set[v]; has {return true}set[v] struct{}{}}return false }

温州网站建设方案及报价

随着互联网的发展,网站建设已经成为企业推广和营销的重要手段。温州作为中国经济发达地区之一,各行各业企业纷纷意识到网站建设的重要性,纷纷加大网站建设工作的投入。那么,温州网站建设方案及报价是怎样的呢?下面我们…

Python | Leetcode Python题解之第218题天际线问题

题目: 题解: class Solution:def getSkyline(self, buildings: List[List[int]]) -> List[List[int]]:buildings.sort(keylambda bu:(bu[0],-bu[2],bu[1]))buildings.append([inf,inf,inf])heap [[-inf,-inf,-inf]]ans []for l,r,h in buildings:i…

开发必备基础知识【字符编码合集】

开发必备基础知识【字符编码合集】 大家在日常开发交流中会发现,别人那里运行的好好的文件,在你电脑上却无法编译,甚至出现一堆莫名其妙的字符,比如:��� 程序中经常遇到一些关于乱码…

探索人工智能在电子商务平台与游戏发行商竞争中几种应用方式

过去 12 年来,电脑和视频游戏的发行策略发生了巨大变化。数字游戏的销量首次超过实体游戏的销量 在20132020 年的封锁进一步加速了这一趋势。例如,在意大利,封锁的第一周导致数字游戏下载量 暴涨174.9%. 展望未来,市场有望继续增…