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

news2024/11/19 6:29:53

推荐原因

这部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.coloradmin.cn/o/1899967.html

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

相关文章

C语言之Const关键字与指针

目录 1 前言2 变量与指针的储存方式3 const int *var;int *const var;const int *const var;理解与区分4 总结 1 前言 实际开发过程中经常遇到const关键字作用于指针的情况,例如:const int *var;int *const var;const…

红薯小眼睛接口分析与Python脚本实现

文章目录 1. 写在前面2. 接口分析3. 算法脚本实现 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

比 PIP 快 100 倍的安装工具

uv 是一个由 Rust 开发的 pip 工具,比 pip 快 100 倍,难以置信,不过真的是快太多了。 安装 在 Mac 上直接通过 brew install uv 安装即可。 venv 创建运行环境,默认当前目录下 .venv uv venv 依赖安装 uv pip install -r re…

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

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;} }

谷粒商城学习笔记-14-项目结构创建提交到码云

一&#xff0c;码云上创建工程仓库 1&#xff0c;,点击右上角加号&#xff0c;选择新建仓库 2&#xff0c;填充必要信息 ①仓库名称&#xff0c;可以理解为工程名称。 ②仓库介绍&#xff0c;添加关于仓库的说明。 ③仓库权限设置&#xff0c;如果是公司项目&#xff0c;一般…

InnoDB内部结构

在mysql数据库中&#xff0c;InnoDB存储引擎是最为常用和强大的存储引擎之一。了解InnoDB的内存结构对于优化数据库的性能&#xff0c;提高系统的稳定性和扩展性至关重要。本文将深入探讨InnoDB的内存结构。 1.Buffer Pool Buffer Pool: 缓冲池&#xff0c;其作用是用来缓存表…

为什么https比http更安全

读完本文&#xff0c;希望你能明白&#xff1a; HTTP通信存在什么问题HTTPS如何改进HTTP存在那些问题HTTPS工作原理是什么 一、什么是HTTPS HTTPS是在HTTP上建立SSL加密层&#xff0c;并对传输数据进行加密&#xff0c;是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感…

奇舞周刊第532期:奇舞团生日快乐~

时光荏苒&#xff0c;岁月如歌&#xff0c;转眼间&#xff0c;奇舞团13岁啦&#x1f382;&#x1f382;&#x1f382;《奇舞周刊》也陪伴大家来到了第532期。&#x1f44f;&#x1f44f; 致敬每一位读者和创作者&#xff0c;是你们的热情、陪伴和鼓励&#xff0c;让我们不断前进…

SpringBoot | 大新闻项目源码打包

对于一个完成好的后端项目&#xff0c;如何进行打包发送给其他人&#xff0c;在电脑上进行查看 1.在pom.xml添加&#xff1a; <build><plugins> <!-- 打包插件--><plugin><groupId>org.springframework.boot</groupId><art…

【HTML入门】第二课 - head标签下的常见表情们

目录 1 本节概要 2 head下的常见标签 2.1 网页编码设置 2.2 网页的标题 2.3 样式标签 3 head标签的内容不会显示到网页上 4 查看网页源代码 1 本节概要 上一节&#xff0c;我们说了HTML网页最基本的框架标签&#xff0c;说到标签分为head头部和body身体部分。这一小节呢…

文言文编程语言|老外来了也得先学论语

最近看到一个有意思的开源项目 wenyan&#xff0c;主要功能就是使用文言文来编写代码。 按项目说明 “Wenyan” 是一种遵循中国古典文学的语法和语调的编程语言。 此外&#xff0c;文言的字符集仅包含繁体汉字和「」引号&#xff0c;确保古代中国人能够阅读。 该编程语言的文…

C++:类的成员属性,公有,私有,保护

在C中级别&#xff0c;类的成员属性分为三种访问控制&#xff1a;公有&#xff08;public&#xff09;、私有&#xff08;private&#xff09;和保护&#xff08;protected&#xff09;。它们用于控制类内部数据对类外部的可见性和访问权限。设置访问属性对于封装和信息隐藏至关…

Truffle学习笔记

Truffle学习笔记 安装truffle, 注意: 虽然目前truffle最新版是 5.0.0, 但是经过我实践之后, 返现和v4有很多不同(比如: web3.eth.accounts; 都获取不到账户), 还是那句话: “nodejs模块的版本问题会搞死人的 !” 目前4.1.15之前的版本都不能用了, 只能安装v4.1.15 npm instal…

Beats:使用 Filebeat 从 Python 应用程序中提取日志

本指南演示了如何从 Python 应用程序中提取日志并将其安全地传送到 Elasticsearch Service 部署中。你将设置 Filebeat 来监控具有标准 Elastic Common Schema (ECS) 格式字段的 JSON 结构日志文件&#xff0c;然后你将在 Kibana 中查看日志事件发生的实时可视化。虽然此示例使…

SCI二区TOP|麋鹿群优化算法: 一种新颖的受自然启发的元启发式算法

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;SO Oladejo受到麋鹿群的繁殖过程启发&#xff0c;提出了麋鹿群优化算法&#xff08;Elk herd optimizer, EHO&#xff09;。 2.算法原理 2.1算法思想 EHO灵感来自麋鹿…

Win11右键默认显示更多选项的方法

问题描述 win11系统默认右键菜单显示选项太少&#xff0c;每次需要点一下“显示更多选项”才能得到想要内容。比方说我用notepad打开一个文档&#xff0c;在win11上要先点一下"显示更多选项“&#xff0c;再选择用notepad打开&#xff0c;操作非常反人类。 Win11右键默…

FreeRTOS 任务

FreeRTOS使用多任务完成功能&#xff0c;首先要了解任务的基本知识。 裸机编程中&#xff0c;单任务系统的编程方式&#xff0c;即裸机的编程方式&#xff0c;这种编程方式的框架一般都是在 main()函数 中使用一个大循环&#xff0c;在循环中顺序地调用相应的函数以处理相应的…

【matlab】分类回归——智能优化算法优化径向基神经网络

目录 径向基&#xff08;Radial Basis Function, RBF&#xff09;神经网络 一、基本概念 二、网络结构 三、工作原理 四、学习算法 五、优点与应用 六、与BP神经网络的比较 智能优化算法 常见的智能优化算法 灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#…

万界星空科技MES系统中的排版排产功能

在当今高度竞争的市场环境中&#xff0c;企业对于生产管理的效率和质量要求日益提高。作为智能制造的重要组成部分&#xff0c;制造执行系统&#xff08;MES&#xff09;以其强大的功能&#xff0c;在提升企业生产能力方面发挥着不可替代的作用。万界星空科技作为行业领先的智能…

eclipse ide中文件编码的修改,解决中文乱码的问题。

1、先上一张图&#xff1a; 记得之前设置过&#xff0c;但是稍微一变&#xff0c;环境编码又到了ISO-8859-1了&#xff0c;然后就出现了乱码。 2、设置eclipse的编码&#xff1a; Preferences--General -- Content Types -- Text -- Java Properties File -- Default encoding…