【推薦圖書】深入淺出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.pswp.cn/diannao/41685.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41685.shtml
英文地址,請注明出處:http://en.pswp.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…

c++應用網絡編程之二網絡的IO模型

一、網絡編程的開發平臺 一般來說,目前開發者面對的主流開發平臺就是Windows和類Unix,或者干脆就是Windows和Linux平臺。至于如IBM或其它等公司的相關平臺,可能對絕大多數開發者來說,可能一生都遇不到。至于嵌入式平臺&#xff0…

上位機圖像處理和嵌入式模塊部署(mcu項目1:用戶手冊)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】 一個完整的產品,除了上位機軟件、固件、硬件、包裝之外,一般還需要一個用戶手冊。好的用戶手冊應該能夠兼顧到大多數人的認…

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

好方法: 垃圾方法:

Python面試題:請解釋 `lambda` 函數是什么,并舉一個例子

lambda函數是Python中用于創建小型匿名函數的一種方式。這些函數通常用于需要一個簡單函數的場景,例如作為參數傳遞給高階函數。lambda函數以lambda關鍵字開始,后跟參數列表和表達式,語法形式如下: lambda arguments: expression…

nginx配置stream代理

項目中遇到某些服務在內網,需要外網訪問的情況,需要配置代理訪問。可用nginx搭建代理服務。 TCP代理 通過nginx的stream模塊可以直接代理TCP服務,步驟如下: 在/etc/nginx/下新建proxy文件夾,用于存放代理配置。此處…

吉洪諾夫正則化隨筆

前言 前幾天在回顧壓縮感知中的特征選擇與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…

linux的服務管理

systemd systemd 是一個系統和服務管理器,用于Linux操作系統中,旨在替代傳統的Unix系統V初始化系統(SysV init)。 不一定所有使用 yum 安裝的軟件都可以通過 systemctl start 來管理。能否通過 systemctl start 管理取決于軟件包…

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…

web學習筆記(七十八)

目錄 1.自定義子組件的配置 2. 自定義子組件生命周期函數 3.父子組件傳值 3.1 父傳子 3.2 子傳父 1.自定義子組件的配置 在components文件中可以創建子組件,首先需要創建一個文件夾,然后右擊文件夾選擇新建Component 選擇這個配置系統不會自動配置…

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 系統總體設…