本書以Spring Boot為基礎(chǔ)介紹Spring框架的應(yīng)用開發(fā),適合Spring應(yīng)用開發(fā)的初學(xué)者使用。全書首先介紹了Spring相關(guān)知識點,進(jìn)而引出Spring Boot的實踐應(yīng)用,包括Spring Boot數(shù)據(jù)操作、定時任務(wù)、消息隊列、前后端開發(fā)、安全控制和項目部署等內(nèi)容。全書采用項目式教學(xué)模式,以項目、任務(wù)為驅(qū)動講解Spring Boot的理論知識和實踐應(yīng)用。本書為立體化、活頁式教材,配套PPT、源代碼、視頻資源二維碼、活頁式綜合案例、課后習(xí)題解答等電子資源,使讀者能夠更加靈活、方便地進(jìn)行學(xué)習(xí)。
本書既可作為高等院校計算機(jī)相關(guān)專業(yè)的教材,也可作為Spring應(yīng)用開發(fā)編程愛好者的自學(xué)書籍。
為了幫助讀者學(xué)習(xí)、掌握和使用Java語言設(shè)計并了解開發(fā)項目的方法,編者攜手企業(yè)有經(jīng)驗的工程師開發(fā)了一整套Java技術(shù)體系叢書。本叢書共5本,包括《Java面向?qū)ο蟪绦蛟O(shè)計(微課視頻版)》《Java Web程序設(shè)計(微課視頻版)》《Spring框架應(yīng)用開發(fā)基于Spring Boot(微課視頻版)》《Spring Cloud微服務(wù)應(yīng)用開發(fā)基于Alibaba Nacos(微課視頻版)》《Spring微服務(wù)系統(tǒng)部署(微課視頻版)》。
本書介紹了Spring框架以及Spring Boot核心技術(shù)。全書為立體化、活頁式教材,采用項目式教學(xué)模式,以項目、任務(wù)為驅(qū)動講解Spring Boot理論知識和實踐應(yīng)用,并配套相應(yīng)的電子資源。
全書共11個項目,項目1介紹了Spring的核心概念和編程實現(xiàn)。項目2介紹了Bean的核心概念和編程實現(xiàn);項目3介紹了Spring AOP的核心概念和編程實現(xiàn);項目4介紹了Spring Boot的核心概念和編程實現(xiàn);項目5介紹了如何在Spring Boot項目中使用Mybatis框架和數(shù)據(jù)庫連接池讀寫數(shù)據(jù)庫數(shù)據(jù)并進(jìn)行事務(wù)控制;項目6介紹了使用Cron表達(dá)式進(jìn)行Spring Task定時任務(wù)編程;項目7介紹了消息隊列中間件的概念和Kafka消息隊列編程;項目8介紹了Spring Boot集成Spring MVC進(jìn)行Web應(yīng)用的后端編程;項目9介紹了Spring Boot前后端不分離項目和前后端分離項目的前端編程實現(xiàn);項目10介紹了Spring Boot項目如何使用Security組件進(jìn)行資源訪問的認(rèn)證和授權(quán);項目11介紹了Spring Boot前后端不分離項目和前后端分離項目的部署過程。
本書建議授課學(xué)時為84個學(xué)時。
本書項目1和項目2由吳邊編寫,項目3~10由張寺寧編寫,項目11由古凌嵐編寫。本書配有詳細(xì)的PPT講義、教學(xué)視頻、本書源代碼、課后練習(xí)解答等電子資源,這些電子資源可從清華大學(xué)出版社官網(wǎng)下載。
由于編者水平有限,不足之處在所難免,敬請廣大讀者批評、指正。
編者2024年1月
張寺寧,軟件設(shè)計師,大數(shù)據(jù)技術(shù)與應(yīng)用專業(yè)專任教師。在IT企業(yè)從事一線軟件研發(fā)工作近10年,在企業(yè)工作期間,參與多個國家級、省部級和地市級大型IT項目開發(fā)工作,包括:全國出入境管理系統(tǒng)、數(shù)字化機(jī)場管理系統(tǒng)、廣東省地稅運維監(jiān)控系統(tǒng)、廣東省警務(wù)綜合監(jiān)控系統(tǒng)、佛山地稅運維監(jiān)控系統(tǒng)等。在校期間,主編出版教材一本,參與1項校級精品課程建設(shè),參與橫向項目,電工考證智能考場管理系統(tǒng)、無人機(jī)智慧機(jī)場集群管理系統(tǒng)。
項目1初識Spring1
任務(wù)1.1了解Spring1
1.1.1Spring簡介1
1.1.2Spring的作用1
1.1.3Spring的發(fā)展2
任務(wù)1.2認(rèn)識Spring項目模板3
任務(wù)1.3了解Spring容器4
1.3.1BeanFactory4
1.3.2ApplicationContext4
任務(wù)1.4體驗Spring編程5
1.4.1環(huán)境準(zhǔn)備5
1.4.2創(chuàng)建Spring Maven項目5
1.4.3認(rèn)識注解6
1.4.4基于注解方式的Spring編程7
任務(wù)1.5了解Spring控制反轉(zhuǎn)(IOC)10
1.5.1初識IOC11
1.5.2依賴注入14
任務(wù)1.6綜合案例: 獲取Spring中Bean的相關(guān)信息16
1.6.1案例任務(wù)16
1.6.2任務(wù)分析16
1.6.3任務(wù)實施16
小結(jié)20
課后練習(xí): 獲取Spring Bean對象相關(guān)信息并過濾20
項目2認(rèn)識Spring中的Bean21
任務(wù)2.1基于注解創(chuàng)建無變量屬性Bean21
2.1.1通過@Bean標(biāo)識方法創(chuàng)建Bean21
2.1.2通過@ComponentScan自動掃描方式創(chuàng)建Bean25
2.1.3通過@Import創(chuàng)建Bean26
2.1.4通過FactoryBean工廠創(chuàng)建Bean30
任務(wù)2.2基于注解創(chuàng)建有變量屬性的Bean32
2.2.1利用有參構(gòu)造方法注入32
2.2.2利用set方法注入33
2.2.3利用注解注入35
任務(wù)2.3了解Bean的作用域41
2.3.1初識Bean作用域41
2.3.2Bean的作用域與線程安全42
2.3.3Spring中單例Bean的多線程訪問控制43
任務(wù)2.4了解Bean的生命周期43
任務(wù)2.5綜合案例: 統(tǒng)計用戶登錄次數(shù)44
2.5.1案例任務(wù)44
2.5.2任務(wù)分析44
2.5.3任務(wù)實施44
小結(jié)48
課后練習(xí): 校驗并分類統(tǒng)計登錄用戶信息48
項目3Spring AOP編程49
任務(wù)3.1了解代理機(jī)制49
任務(wù)3.2初識Spring AOP50
3.2.1AOP簡介50
3.2.2AOP術(shù)語51
3.2.3Spring的兩種AOP實現(xiàn)52
任務(wù)3.3基于注解的AOP編程57
任務(wù)3.4綜合案例: 利用AOP實現(xiàn)訪問控制62
3.4.1案例任務(wù)63
3.4.2任務(wù)分析63
3.4.3任務(wù)實施63
小結(jié)66
課后練習(xí): 利用AOP方法實現(xiàn)權(quán)限認(rèn)證66
項目4初識Spring Boot67
任務(wù)4.1了解Spring Boot67
任務(wù)4.2體驗Spring Boot編程67
4.2.1創(chuàng)建Spring Boot項目68
4.2.2分析項目結(jié)構(gòu)及pom.xml文件68
4.2.3運行Spring Boot項目并打包71
4.2.4設(shè)置Spring Boot服務(wù)開機(jī)啟動73
任務(wù)4.3體驗Spring Boot單元測試75
4.3.1使用默認(rèn)測試類進(jìn)行單元測試75
4.3.2手動創(chuàng)建測試類進(jìn)行單元測試76
任務(wù)4.4了解Spring Boot配置文件78
4.4.1初識yaml語法78
4.4.2讀取yaml中的配置79
任務(wù)4.5Spring Boot多環(huán)境配置85
4.5.1基于多文件的多環(huán)境配置85
4.5.2基于單文件的多環(huán)境配置86
任務(wù)4.6綜合案例: 用Spring Boot實現(xiàn)基于TCP服務(wù)的請求響應(yīng)87
4.6.1案例任務(wù)87
4.6.2任務(wù)分析87
4.6.3任務(wù)實施88
小結(jié)91
課后練習(xí): 用Spring Boot實現(xiàn)基于TCP服務(wù)網(wǎng)購功能91
項目5Spring Boot數(shù)據(jù)操作和事務(wù)處理92
任務(wù)5.1初識數(shù)據(jù)庫連接池92
5.1.1Hikari連接池92
5.1.2Druid連接池94
任務(wù)5.2Spring Boot Mybatis數(shù)據(jù)操作96
5.2.1Mybatis簡介96
5.2.2Spring Boot引入Mybatis97
5.2.3Spring Boot引入Lombok插件98
5.2.4Mybatis注解進(jìn)行單表數(shù)據(jù)操作99
5.2.5Mybatis注解進(jìn)行多表關(guān)聯(lián)查詢104
5.2.6Mybatis注解動態(tài)SQL111
5.2.7Mybatis數(shù)據(jù)緩存機(jī)制121
任務(wù)5.3Spring Boot事務(wù)125
5.3.1事務(wù)簡介126
5.3.2Spring Boot聲明式事務(wù)控制126
5.3.3事務(wù)隔離級別127
5.3.4事務(wù)傳播機(jī)制128
5.3.5編程實現(xiàn)基于注解的事務(wù)控制129
任務(wù)5.4綜合案例: 用Spring Boot模擬實現(xiàn)人員賬戶管理130
5.4.1案例任務(wù)130
5.4.2案例分析131
5.4.3任務(wù)實施131
小結(jié)131
課后練習(xí): 用Spring Boot模擬實現(xiàn)人員賬戶轉(zhuǎn)賬131
項目6Spring Boot定時任務(wù)132
任務(wù)6.1Cron表達(dá)式和定時任務(wù)框架132
6.1.1初識Cron表達(dá)式132
6.1.2常用的定時任務(wù)框架134
任務(wù)6.2基于Spring Task定時任務(wù)編程135
6.2.1初識Spring Task135
6.2.2Spring Task基于單個定時任務(wù)編程實現(xiàn)135
6.2.3Spring Task基于多個定時任務(wù)編程實現(xiàn)139
6.2.4Spring Task動態(tài)定時任務(wù)編程實現(xiàn)142
任務(wù)6.3綜合案例: 利用Spring Task實現(xiàn)定時鬧鐘146
6.3.1案例任務(wù)146
6.3.2案例分析146
6.3.3任務(wù)實施147
小結(jié)147
課后練習(xí): 定時清除過期鬧鐘任務(wù)147
項目7Spring Boot消息隊列148
任務(wù)7.1初識消息隊列148
7.1.1消息隊列簡介148
7.1.2常用的消息隊列中間件149
任務(wù)7.2基于Kafka的消息隊列編程149
7.2.1Kafka簡介149
7.2.2Kafka安裝和配置151
7.2.3Spring Boot引入Kafka151
7.2.4Spring Boot基于Kafka的編程實現(xiàn)152
任務(wù)7.3綜合案例: Kafka采集主機(jī)運行信息159
7.3.1案例任務(wù)159
7.3.2案例分析159
7.3.3任務(wù)實施160
小結(jié)166
課后練習(xí): Kafka采集鍵盤輸入字符數(shù)據(jù)167
項目8Spring Boot Web應(yīng)用開發(fā)后端168
任務(wù)8.1初識Spring MVC168
8.1.1Spring MVC簡介168
8.1.2Spring MVC工作流程169
8.1.3Spring Boot引入Spring MVC170
8.1.4Spring MVC單元測試工具M(jìn)ockMvc170
任務(wù)8.2Spring MVC訪問靜態(tài)資源171
任務(wù)8.3Spring MVC訪問動態(tài)資源映射請求172
8.3.1@Controller注解172
8.3.2@RequestMapping注解172
8.3.3組合注解175
任務(wù)8.4Spring MVC訪問動態(tài)資源獲取請求數(shù)據(jù)175
8.4.1@RequestParam注解175
8.4.2@RequsetBody注解180
8.4.3@PathVariable注解184
任務(wù)8.5Spring MVC訪問動態(tài)資源輸出響應(yīng)186
8.5.1跳轉(zhuǎn)頁面186
8.5.2回寫數(shù)據(jù)191
任務(wù)8.6Spring MVC Restful風(fēng)格編程192
8.6.1初識Restful風(fēng)格192
8.6.2Spring MVC實現(xiàn)Restful風(fēng)格編程193
任務(wù)8.7Spring MVC 攔截器196
8.7.1定義攔截器196
8.7.2使用攔截器197
8.7.3攔截器和過濾器199
任務(wù)8.8Spring MVC文件上傳和下載200
8.8.1Spring MVC 文件上傳200
8.8.2Spring MVC文件下載203
任務(wù)8.9綜合案例: 員工信息管理204
8.9.1案例任務(wù)204
8.9.2案例分析204
8.9.3任務(wù)實施204
小結(jié)205
課后練習(xí): 學(xué)生信息管理205
項目9Spring Boot Web應(yīng)用開發(fā)前端206
任務(wù)9.1了解Spring Boot Web應(yīng)用前端實現(xiàn)方式206
任務(wù)9.2利用JSP模板引擎實現(xiàn)前端功能207
9.2.1初識JSP模板引擎207
9.2.2Spring Boot引入并配置JSP模板引擎207
9.2.3編寫控制器類和JSP前端頁面實現(xiàn)增、刪、改、查209
任務(wù)9.3利用Thymeleaf模板引擎實現(xiàn)前端功能216
9.3.1初識Thymeleaf模板引擎216
9.3.2Spring Boot引入Thymeleaf模板引擎216
9.3.3Thymeleaf語法216
9.3.4編寫Thymeleaf前端頁面實現(xiàn)增、刪、改、查220
任務(wù)9.4利用Vue實現(xiàn)前端功能223
9.4.1初識Vue224
9.4.2搭建Vue3開發(fā)環(huán)境225
9.4.3創(chuàng)建Vue3項目225
9.4.4Vue3項目目錄結(jié)構(gòu)及訪問機(jī)制228
9.4.5Vue3組件入口函數(shù)setup函數(shù)230
9.4.6創(chuàng)建和渲染響應(yīng)式數(shù)據(jù)233
9.4.7修改響應(yīng)式數(shù)據(jù)243
9.4.8異步加載響應(yīng)式數(shù)據(jù)Axios組件245
9.4.9Vue3頁面跳轉(zhuǎn)VueRouter組件251
9.4.10Vue3集成ElementPlus259
任務(wù)9.5綜合案例: 基于Vue3實現(xiàn)員工信息管理264
9.5.1案例任務(wù)264
9.5.2案例分析264
9.5.3任務(wù)實施264
小結(jié)264
課后練習(xí): 學(xué)生信息管理265
項目10Spring Boot安全控制Security266
任務(wù)10.1初識Spring Security266
10.1.1Security簡介266
10.1.2Spring Boot中引入Spring Security267
任務(wù)10.2Spring Security單用戶認(rèn)證和授權(quán)267
10.2.1Spring Security默認(rèn)登錄注銷認(rèn)證267
10.2.2Spring Security自定義登錄注銷認(rèn)證270
10.2.3Spring Security自定義授權(quán)273
10.2.4Spring Security靜態(tài)資源的訪問控制278
任務(wù)10.3Spring Security多用戶認(rèn)證和授權(quán)278
任務(wù)10.4綜合案例: 利用Spring Security進(jìn)行安全控制281
10.4.1案例任務(wù)281
10.4.2案例分析281
10.4.3案例實施281
小結(jié)282
課后練習(xí): 前后端分離項目的安全控制282
項目11Spring Boot Web項目部署283
任務(wù)11.1部署前后端不分離項目283
11.1.1基于Jar項目部署283
11.1.2基于War項目部署285
任務(wù)11.2前后端分離項目部署288
小結(jié)291
課后練習(xí): 學(xué)生信息管理項目部署291
參考文獻(xiàn)292