學(xué)習(xí)Spring Boot 3.0
定 價(jià):89 元
- 作者:[美]格雷格·L.特恩奎斯特著劉亮譯
- 出版時(shí)間:2023/10/1
- ISBN:9787302646518
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP312.8JA
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
《學(xué)習(xí)Spring Boot 3.0》詳細(xì)闡述了與Spring Boot 3.0相關(guān)的基本解決方案,主要包括Spring Boot的核心功能、使用Spring Boot創(chuàng)建Web應(yīng)用程序、使用Spring Boot查詢數(shù)據(jù)、使用Spring Boot保護(hù)應(yīng)用程序、使用Spring Boot進(jìn)行測(cè)試、使用Spring Boot配置應(yīng)用程序、使用Spring Boot發(fā)布應(yīng)用程序、使用Spring Boot構(gòu)建原生程序、編寫響應(yīng)式Web控制器、響應(yīng)式處理數(shù)據(jù)等內(nèi)容。此外,本書還提供了相應(yīng)的示例、代碼,以幫助讀者進(jìn)一步理解相關(guān)方案的實(shí)現(xiàn)過(guò)程。 本書適合作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)的教材和教學(xué)參考書,也可作為相關(guān)開(kāi)發(fā)人員的自學(xué)用書和參考手冊(cè)。
《學(xué)習(xí)Spring Boot 3.0》專為新手和具有一定經(jīng)驗(yàn)的Spring開(kāi)發(fā)人員設(shè)計(jì)。它將教你如何構(gòu)建Java應(yīng)用程序,而不會(huì)在基礎(chǔ)架構(gòu)和其他煩瑣的細(xì)節(jié)上浪費(fèi)時(shí)間。本書將幫助你專注于在真實(shí)數(shù)據(jù)庫(kù)之上構(gòu)建Web應(yīng)用程序,并使用現(xiàn)代安全實(shí)踐進(jìn)行鎖定。
本書專為新手和具有一定經(jīng)驗(yàn)的Spring開(kāi)發(fā)人員設(shè)計(jì)。它將教你如何構(gòu)建Java應(yīng)用程序,而不會(huì)在基礎(chǔ)架構(gòu)和其他煩瑣的細(xì)節(jié)上浪費(fèi)時(shí)間。本書將幫助你專注于在真實(shí)數(shù)據(jù)庫(kù)之上構(gòu)建Web應(yīng)用程序,并使用現(xiàn)代安全實(shí)踐進(jìn)行鎖定。
最重要的是,你會(huì)在本書中發(fā)現(xiàn)多種將應(yīng)用程序投入生產(chǎn)環(huán)境的方法。如果這還不夠,它甚至在末尾還給出一些秘密武器(好吧,不是真正的秘密),即通過(guò)使用響應(yīng)式編程來(lái)獲取和運(yùn)行現(xiàn)有服務(wù)器(或云)中的更多內(nèi)容。
本書讀者
閱讀本書,你應(yīng)該對(duì)Java有初步的了解,最好是Java 8或更高版本。熟悉lambda函數(shù)、方法引用、記錄類型和Java 17中新的和改進(jìn)的集合API當(dāng)然更好,但這不是必需的。
使用過(guò)Spring Boot的以前版本(1.x、2.x)會(huì)更好,但不是必需的。
內(nèi)容介紹
本書分為4篇,共10章。具體內(nèi)容如下。
? 第1篇:Spring Boot基礎(chǔ)知識(shí),包括第1章。
? 第1章Spring Boot的核心功能,介紹Spring Boot的獨(dú)特魅力及其在構(gòu)建應(yīng)用程序時(shí)的基本功能。
? 第2篇:使用Spring Boot創(chuàng)建應(yīng)用程序,包括第2~5章。
? 第2章使用Spring Boot創(chuàng)建Web應(yīng)用程序,教你如何通過(guò)服務(wù)器端和客戶端選項(xiàng)輕松地為Java應(yīng)用程序構(gòu)建Web層。
? 第3章使用Spring Boot查詢數(shù)據(jù),詳細(xì)介紹如何通過(guò)Spring Data充分利用數(shù)據(jù)庫(kù)。
? 第4章使用Spring Boot保護(hù)應(yīng)用程序,展示如何使用Spring Security的尖端功能從內(nèi)到外鎖定你的應(yīng)用程序,使其免受壞人的攻擊。
? 第5章使用Spring Boot進(jìn)行測(cè)試,教你如何通過(guò)使用模擬和嵌入式數(shù)據(jù)庫(kù)進(jìn)行測(cè)試,甚至將 Testcontainers 與真實(shí)數(shù)據(jù)庫(kù)結(jié)合使用來(lái)建立對(duì)系統(tǒng)的 信心。
? 第3篇:使用Spring Boot發(fā)布應(yīng)用程序,包括第6~8章。
? 第6章使用Spring Boot配置應(yīng)用程序,展示在構(gòu)建應(yīng)用程序后調(diào)整應(yīng)用程序的方法。
? 第7章使用Spring Boot發(fā)布應(yīng)用程序,探討將應(yīng)用程序投入生產(chǎn)環(huán)境并將其交付給用戶的多種方法。
? 第8章使用Spring Boot構(gòu)建原生程序,向你展示如何使用亞秒級(jí)啟動(dòng)的原生鏡像來(lái)加快你的應(yīng)用程序,并且不會(huì)占用所有資源。
? 第4篇:使用Spring Boot擴(kuò)展應(yīng)用程序,包括第9章和第10章。
? 第9章編寫響應(yīng)式Web控制器,闡釋響應(yīng)式編程的概念,并且演示如何編寫響應(yīng)式Web控制器。
? 第10章響應(yīng)式處理數(shù)據(jù),探討響應(yīng)式獲取數(shù)據(jù)的難題,介紹如何使用R2DBC以響應(yīng)方式查詢數(shù)據(jù)。
充分利用本書
Spring Boot 3.0基于Java 17構(gòu)建。通過(guò)sdkman(https://sdkman.io),你可以輕松地安裝所需的Java版本。第8章使用Spring Boot構(gòu)建原生程序介紹如何使用sdkman安裝特定版本的Java 17(該版本支持在GraalVM上構(gòu)建原生鏡像)。
雖然可以使用一些文本編輯器編寫代碼,但任何現(xiàn)代集成開(kāi)發(fā)環(huán)境(見(jiàn)表P-1)都將大大增強(qiáng)編碼體驗(yàn)。你可以選擇自己最喜歡的集成開(kāi)發(fā)環(huán)境。
表P-1 本書涵蓋的軟件/硬件和操作系統(tǒng)需求
本書涵蓋的軟件/硬件 操作系統(tǒng)需求
sdkman(適用于Java 17)(https://sdkman.io) Windows、macOS或Linux
任何現(xiàn)代集成開(kāi)發(fā)環(huán)境都可以幫助你編寫代碼:
? IntelliJ IDEA:
https://springbootlearning.com/intellij-idea-try-it Windows、macOS或Linux
續(xù)表
本書涵蓋的軟件/硬件 操作系統(tǒng)需求
? VS Code:
https://springbootlearning.com/vscode
? Spring Tool Suite:
https://springbootlearning.com/sts Windows、macOS或Linux
VS Code和Spring Tool Suite是免費(fèi)的。IntelliJ IDEA有社區(qū)版和終極版。社區(qū)版是免費(fèi)的,但某些Spring特有的功能則需要購(gòu)買終極版。終極版有30天的免費(fèi)試用期。
如果你正在使用本書的數(shù)字版本,我們建議你自己輸入代碼或從本書的Github存儲(chǔ)庫(kù)中訪問(wèn)代碼(鏈接將在下文中提供)。這樣做將幫助你避免與復(fù)制和粘貼代碼相關(guān)的任何潛在錯(cuò)誤。
本書并不是你構(gòu)建Spring Boot應(yīng)用程序之旅的終點(diǎn)。你也可以查看本書作者的YouTube頻道Spring Boot Learning,該頻道將發(fā)布有關(guān)Spring Boot和軟件工程的視頻。其網(wǎng)址如下:
http://bit.ly/3uSPLCz
此外,以下網(wǎng)址也可提供有助于你編寫更好應(yīng)用程序的其他資源:
https://springbootlearning.com
下載示例代碼文件
本書隨附的代碼可以在配套GitHub存儲(chǔ)庫(kù)中找到,其網(wǎng)址如下:
https://github.com/PacktPublishing/Distributed-Machine-Learning-with-Python
如果代碼被更新,那么現(xiàn)有的GitHub存儲(chǔ)庫(kù)也會(huì)保持同步更新。
下載彩色圖像
我們還提供了一個(gè)PDF文件,其中包含本書中使用的屏幕截圖/圖表的彩色圖像。你可以通過(guò)以下地址進(jìn)行下載:
https://packt.link/FvE6S
本書約定
本書中使用了許多文本約定。
(1)有關(guān)代碼塊的設(shè)置如下:
@Controller
public class HomeController {
private final VideoService videoService;
public HomeController(VideoService videoService) {
this.videoService = videoService;
}
@GetMapping("/")
public String index(Model model) {
model.addAttribute("videos", videoService.getVideos());
return "index";
}
}
(2)當(dāng)我們希望提醒你注意代碼塊的特定部分時(shí),相關(guān)行或項(xiàng)目將加粗進(jìn)行顯示:
@Bean
SecurityFilterChain configureSecurity(HttpSecurity http) {
http.authorizeHttpRequests()
.requestMatchers("/login").permitAll()
.requestMatchers("/", "/search").authenticated()
.anyRequest().denyAll()
.and()
.formLogin()
.and()
.httpBasic();
return http.build();
}
(3)任何命令行的輸入或輸出都采用如下所示的粗體代碼形式:
$ cd ch7
$ ./mvnw clean spring-boot:build-image
(4)術(shù)語(yǔ)或重要單詞采用中英文對(duì)照形式給出,在括號(hào)內(nèi)保留其英文原文。示例如下:
Spring AMQP:使用高級(jí)消息隊(duì)列協(xié)議(advanced message queuing protocol,AMQP)消息代理進(jìn)行異步通信。
Spring AOP:使用面向方面的編程(aspect-oriented programming,AOP)將建議應(yīng)用于代碼。
(5)對(duì)于界面詞匯或?qū)S忻~將保留其英文原文,在括號(hào)內(nèi)添加其中文譯文。示例如下:
可以看到,該頁(yè)面顯示了額外的安全詳細(xì)信息。它具有Username(用戶名)字段以及用戶已獲分配的Authorities(權(quán)限)。最后,有一個(gè)Logout(注銷)按鈕。
(6)本書還使用了以下兩個(gè)圖標(biāo):
表示警告或重要的注意事項(xiàng)。
表示提示信息或操作技巧。
格雷格·L.特恩奎斯特是Spring Data JPA和Spring Web Services的首席開(kāi)發(fā)人員。他為Spring HATEOAS、Spring Data REST、Spring Security、Spring Framework以及Spring portfolio的許多其他部分都做出了貢獻(xiàn)。多年以來(lái),他一直在用他的script-fu維護(hù)Spring Data團(tuán)隊(duì)的持續(xù)集成(CI)系統(tǒng)。他撰寫了多部關(guān)于Spring Boot的著作,包括Packt出版社的暢銷書Learning Spring Boot 2.0第二版以及第一本上市的Spring Boot書籍。他甚至推出了自己的YouTube頻道Spring Boot Learning(http://bit.ly/3uSPLCz),你可以在該頻道學(xué)習(xí)Spring Boot并享受其中的樂(lè)趣。在加入Spring團(tuán)隊(duì)之前,Greg在Harris Corp擔(dān)任高級(jí)軟件工程師,參與了多個(gè)項(xiàng)目。他擁有計(jì)算機(jī)工程碩士學(xué)位,現(xiàn)居美國(guó)。
第1篇 Spring Boot基礎(chǔ)知識(shí)
第1章 Spring Boot的核心功能 3
1.1 技術(shù)要求 4
1.1.1 安裝Java 17 4
1.1.2 安裝現(xiàn)代IDE 5
1.1.3 創(chuàng)建GitHub賬戶 5
1.1.4 尋找其他支持 6
1.2 自動(dòng)配置Spring bean 6
1.2.1 了解應(yīng)用程序上下文 6
1.2.2 探索Spring Boot中的自動(dòng)配置策略 7
1.3 使用Spring Boot啟動(dòng)器添加portfolio組件 10
1.4 使用配置屬性自定義設(shè)置 12
1.4.1 創(chuàng)建自定義屬性 13
1.4.2 外部化應(yīng)用程序配置 14
1.4.3 配置基于屬性的Bean 16
1.5 管理應(yīng)用程序依賴項(xiàng) 18
1.6 小結(jié) 19
第2篇 使用Spring Boot創(chuàng)建應(yīng)用程序
第2章 使用Spring Boot創(chuàng)建Web應(yīng)用程序 23
2.1 使用start.spring.io構(gòu)建應(yīng)用程序 23
2.2 創(chuàng)建Spring MVC Web控制器 26
2.3 使用start.spring.io擴(kuò)充現(xiàn)有項(xiàng)目 28
2.4 利用模板創(chuàng)建內(nèi)容 30
2.4.1 將演示數(shù)據(jù)添加到模板中 31
2.4.2 使用更好的設(shè)計(jì)構(gòu)建我們的應(yīng)用程序 33
2.4.3 通過(guò)構(gòu)造函數(shù)調(diào)用注入依賴 35
2.4.4 通過(guò)HTML表單更改數(shù)據(jù) 36
2.5 創(chuàng)建基于JSON的API 39
2.6 將Node.js掛接到Spring Boot Web應(yīng)用程序 43
2.6.1 將JavaScript與Node.js綁定在一起 45
2.6.2 創(chuàng)建React.js應(yīng)用程序 46
2.7 小結(jié) 52
第3章 使用Spring Boot查詢數(shù)據(jù) 53
3.1 將Spring Data添加到現(xiàn)有的Spring Boot應(yīng)用程序中 53
3.1.1 使用Spring Data輕松管理數(shù)據(jù) 54
3.1.2 將Spring Data JPA添加到項(xiàng)目中 56
3.2 DTO、實(shí)體和POJO 56
3.2.1 實(shí)體 57
3.2.2 DTO 58
3.2.3 POJO 59
3.3 創(chuàng)建Spring Data存儲(chǔ)庫(kù) 59
3.4 使用自定義查找器 61
3.4.1 對(duì)結(jié)果進(jìn)行排序 65
3.4.2 限制查詢結(jié)果 66
3.5 使用query by example找到動(dòng)態(tài)查詢的答案 67
3.6 使用自定義JPA 70
3.7 小結(jié) 73
第4章 使用Spring Boot保護(hù)應(yīng)用程序 75
4.1 將Spring Security添加到項(xiàng)目中 76
4.2 使用自定義安全策略創(chuàng)建用戶 77
4.3 使用Spring Data支持的一組用戶交換硬編碼用戶 79
4.4 保護(hù)網(wǎng)絡(luò)路由和HTTP謂詞 82
4.4.1 Spring Boot自動(dòng)配置的安全策略 83
4.4.2 表單身份驗(yàn)證和基本身份驗(yàn)證 83
4.4.3 創(chuàng)建自定義安全策略 86
4.4.4 關(guān)于跨站請(qǐng)求偽造的問(wèn)題 87
4.5 Spring Data的安全保護(hù)方法 89
4.5.1 更新模型 89
4.5.2 取得數(shù)據(jù)的所有權(quán) 91
4.5.3 添加刪除按鈕 92
4.5.4 鎖定訪問(wèn) 93
4.5.5 啟用方法級(jí)安全性 94
4.5.6 在站點(diǎn)上顯示用戶詳細(xì)信息 94
4.6 利用Google對(duì)用戶進(jìn)行身份驗(yàn)證 98
4.6.1 使用OAuth的優(yōu)點(diǎn) 99
4.6.2 使用OAuth的缺點(diǎn) 99
4.6.3 創(chuàng)建Google OAuth 2.0應(yīng)用程序 99
4.6.4 將OAuth客戶端添加到Spring Boot項(xiàng)目中 101
4.6.5 遠(yuǎn)程調(diào)用OAuth2 API 104
4.6.6 創(chuàng)建一個(gè)OAuth2支持的Web應(yīng)用程序 108
4.7 小結(jié) 115
第5章 使用Spring Boot進(jìn)行測(cè)試 117
5.1 將JUnit 5添加到應(yīng)用程序中 117
5.2 為域?qū)ο髣?chuàng)建測(cè)試 119
5.3 使用MockMVC測(cè)試Web控制器 122
5.4 使用模擬測(cè)試數(shù)據(jù)存儲(chǔ)庫(kù) 125
5.5 使用嵌入式數(shù)據(jù)庫(kù)測(cè)試數(shù)據(jù)存儲(chǔ)庫(kù) 130
5.6 將Testcontainers添加到應(yīng)用程序中 134
5.7 使用Testcontainers測(cè)試數(shù)據(jù)存儲(chǔ)庫(kù) 136
5.8 使用Spring Security Test測(cè)試安全策略 140
5.9 小結(jié) 145
第3篇 使用Spring Boot發(fā)布應(yīng)用程序
第6章 使用Spring Boot配置應(yīng)用程序 149
6.1 創(chuàng)建自定義屬性 149
6.2 創(chuàng)建基于配置文件的屬性文件 154
6.3 切換到Y(jié)AML 157
6.4 使用環(huán)境變量設(shè)置屬性 159
6.5 屬性覆蓋的順序 160
6.6 小結(jié) 163
第7章 使用Spring Boot發(fā)布應(yīng)用程序 165
7.1 創(chuàng)建超級(jí)JAR 165
7.2 組裝Docker容器 168
7.3 構(gòu)建正確類型的容器 170
7.4 將應(yīng)用程序發(fā)布到Docker Hub上 173
7.5 在生產(chǎn)環(huán)境中進(jìn)行調(diào)整 175
7.6 使用Spring Boot進(jìn)行擴(kuò)展 176
7.7 小結(jié) 180
第8章 使用Spring Boot構(gòu)建原生程序 181
8.1 關(guān)于GraalVM 181
8.2 為GraalVM改造應(yīng)用程序 182
8.3 在GraalVM中運(yùn)行原生Spring Boot應(yīng)用程序 185
8.4 需要GraalVM的原因 189
8.5 使用GraalVM組裝Docker容器 190
8.5.1 Spring Boot 3.0與Spring Boot 2.7和Spring Native 191
8.5.2 GraalVM和其他庫(kù) 191
8.6 小結(jié) 192
第4篇 使用Spring Boot擴(kuò)展應(yīng)用程序
第9章 編寫響應(yīng)式Web控制器 195
9.1 關(guān)于響應(yīng)式編程 195
9.1.1 響應(yīng)式編程簡(jiǎn)介 196
9.1.2 Reactive Streams詳解 197
9.2 創(chuàng)建響應(yīng)式Spring Boot應(yīng)用程序 198
9.3 通過(guò)響應(yīng)式GET方法提供數(shù)據(jù) 200
9.4 通過(guò)響應(yīng)式POST方法使用傳入數(shù)據(jù) 201
9.4.1 使用Project Reactor擴(kuò)展應(yīng)用程序 202
9.4.2 Java并發(fā)編程簡(jiǎn)史 203
9.5 提供響應(yīng)式模板 204
9.5.1 創(chuàng)建響應(yīng)式Web控制器 205
9.5.2 制作Thymeleaf模板 206
9.6 響應(yīng)式創(chuàng)建超媒體 210
9.7 小結(jié) 216
第10章 響應(yīng)式處理數(shù)據(jù) 219
10.1 響應(yīng)式獲取數(shù)據(jù)的難題 219
10.2 選擇響應(yīng)式數(shù)據(jù)存儲(chǔ) 221
10.3 創(chuàng)建響應(yīng)式數(shù)據(jù)存儲(chǔ)庫(kù) 222
10.4 試用R2DBC 223
10.4.1 使用R2dbcEntityTemplate加載數(shù)據(jù) 225
10.4.2 將數(shù)據(jù)響應(yīng)式地返回API控制器 226
10.4.3 響應(yīng)式地處理模板中的數(shù)據(jù) 228
10.5 小結(jié) 230