輕量級 Java EE Web 框架技術 — Spring MVC + Spring + MyBati

李冬海,靳宗信,薑維,黨婉譽

  • 輕量級 Java EE Web 框架技術 — Spring MVC + Spring + MyBati-preview-1
  • 輕量級 Java EE Web 框架技術 — Spring MVC + Spring + MyBati-preview-2
  • 輕量級 Java EE Web 框架技術 — Spring MVC + Spring + MyBati-preview-3
輕量級 Java EE Web 框架技術 — Spring MVC + Spring + MyBati-preview-1

買這商品的人也買了...

商品描述

本書介紹Java EE領域的Spring MVC、MyBatis、Spring和Spring Boot這4種主流框架和技術。本書分為5篇。第1篇介紹Java的構建工具javac、Ant和Maven;第2篇介紹構建Web應用的Spring MVC框架;第3篇介紹MyBatis ORM框架;第4篇介紹Spring容器;第5篇介紹Spring Boot。本書重要內容配有界面截圖,關鍵內容還配以示意圖,使復雜的技術更容易理解。書中還融入了學習方法介紹,以使讀者觸類旁通,更輕松地學習和理解其他框架。 本書便於教學與自學,註重理論與應用結合,是與主流技術接軌的教材,可供高校電腦類專業和培訓機構教學以及個人自學使用。

目錄大綱

目錄

 

 

第1篇構 建 工 具

第1章初識構建工具31.1安裝和配置JDK3

1.1.1下載JDK3

1.1.2安裝JDK3

1.1.3配置環境變量4

1.1.4測試安裝4

1.2初識構建工具6

1.2.1編寫Hello類6

1.2.2編譯6

1.2.3運行7

1.2.4打包7

1.2.5運行打包文件8

第2章深入構建工具9

2.1構建項目9

2.1.1創建目錄9

2.1.2依賴庫文件9

2.1.3編寫應用類9

2.2編譯11

2.2.1javac編譯選項11

2.2.2javac編譯命令要素11

2.2.3查找依賴類12

2.2.4手工編譯源文件13

2.2.5手工編譯整個項目15

2.2.6亂碼問題15

2.3打包16

2.3.1jar包結構16

2.3.2jar打包命令詳解16

2.3.3打包應用17

2.3.4創建可執行的jar包18

2.3.5手工打包整個項目19

2.4運行20

2.4.1java命令詳解20

2.4.2java命令的運行方式21

2.4.3Java運行要素22

2.4.4依賴庫加載方案22

2.4.5引導類加載方案23

2.4.6擴展類加載方案23

2.4.7用戶類加載方案23

2.4.8ClassLoader方案25

〖3〗輕量級Java EE Web框架技術——Spring MVC+Spring+MyBatis+Spring Boot目錄〖3〗第3章Ant構建工具26

3.1Ant的特點26

3.2下載、安裝和測試Ant26

3.2.1下載Ant26

3.2.2安裝Ant26

3.2.3測試Ant27

3.3初識Ant27

3.3.1build.xml文件27

3.3.2創建目錄28

3.3.3編譯任務29

3.3.4打包任務30

3.3.5運行任務30

3.3.6清除任務31

3.3.7重新運行任務31

3.3.8生成清單文件32

3.4Ant文件命令32

3.4.1創建目錄命令32

3.4.2復制命令33

3.4.3刪除命令33

3.4.4移動命令34

3.5其他命令35

3.5.1時間戳命令35

3.5.2執行SQL語句36

3.6深入Ant36

3.6.1創建目錄37

3.6.2清除項目37

3.6.3編譯項目37

3.6.4classpath構建39

3.6.5打包項目40

3.6.6運行項目41

3.6.7打包可執行的jar(依賴外部)42

3.6.8打包可執行的jar(獨立運行)44

第4章Maven構建工具46

4.1Maven的安裝與配置46

4.1.1下載46

4.1.2設置系統環境變量46

4.1.3檢測安裝47

4.2Maven的基本概念48

4.2.1庫文件管理48

4.2.2配置文件的作用48

4.2.3Maven項目坐標49

4.2.4配置項目依賴庫50

4.2.5項目構建配置信息50

4.2.6Maven項目目錄結構51

4.2.7Maven與Ant的對比51

4.3Maven倉庫52

4.3.1倉庫管理52

4.3.2本地倉庫52

4.3.3遠程倉庫53

4.3.4Maven坐標與倉庫路徑的約定53

4.3.5Maven依賴庫的作用域54

4.4創建項目55

4.4.1生成項目骨架插件55

4.4.2Maven創建項目的命令56

4.4.3可用項目骨架56

4.5創建Java項目58

4.5.1創建命令58

4.5.2下載的庫文件59

4.5.3Maven自動創建的目錄結構59

4.5.4Maven自動創建的pom.xml文件60

4.5.5Maven自動創建的Java類App.java60

4.5.6Maven自動創建的測試類AppTest.java61

4.6編譯項目62

4.6.1編譯命令62

4.6.2編譯生成class文件62

4.7打包項目63

4.7.1打包命令63

4.7.2生成jar包文件64

4.7.3運行項目64

4.8清除編譯結果64

4.9安裝項目65

4.10鏡像倉庫配置66

4.10.1全局配置66

4.10.2單個項目依賴庫鏡像配置67

4.10.3單個項目插件庫鏡像配置68

第5章深入Maven構建工具71

5.1Maven生命周期71

5.1.1項目構建過程與Maven生命周期71

5.1.2Clean生命周期72

5.1.3Default生命周期72

5.1.4Site生命周期73

5.1.5生命周期內各階段和生命周期之間的關系74

5.1.6Maven常用命令74

5.2Maven插件74

5.2.1Maven插件框架74

5.2.2與生命周期有關的插件74

5.2.3插件調用方式76

5.2.4插件調用方式的差異76

5.2.5插件的配置79

5.2.6綁定生命周期與插件目標79

5.3Maven構建配置80

5.3.1<build>標簽80

5.3.2基本元素配置標簽81

5.3.3<resources>標簽81

5.3.4<plugins>標簽82

5.3.5<pluginManagement>標簽83

5.4編譯插件84

5.5打包插件84

5.5.1增加helloapp功能84

5.5.2常用的打包插件85

5.6用jar與dependency插件打包與運行86

5.6.1創建可運行的jar86

5.6.2設置啟動類87

5.6.3設置庫路徑87

5.6.4利用mavendependencyplugin復制jar包87

5.6.5打包安裝88

5.6.6運行包89

5.7用mavenassemblyplugin插件打包與運行89

5.7.1配置mavenassemblyplugin插件89

5.7.2創建可執行的jar包90

5.7.3綁定到default生命周期打包階段90

5.7.4jar包命名91

5.7.5打包安裝91

5.7.6運行包92

5.7.7jar包文件分析92

5.8利用mavenjarplugin與mavenassemblyplugin插件打包與運行93

5.8.1mavenassemblyplugin插件配置93

5.8.2deployment.xml文件配置93

5.8.3打包安裝94

5.8.4運行包95

第6章構建工具Eclipse96

6.1Eclipse下載、安裝和運行96

6.1.1Eclipse下載96

6.1.2Eclipse安裝和運行96

6.2Java項目的編譯98

6.2.1編譯Java項目需要的條件98

6.2.2javac命令98

6.2.3在Maven中編譯98

6.2.4在Eclipse中編譯98

6.3在Eclipse中編譯、打包和運行99

6.3.1創建應用99

6.3.2在開發環境下運行Java程序99

6.3.3配置構建路徑99

6.3.4編譯項目100

6.3.5打包項目101

6.3.6運行jar包104

第7章在Eclipse中使用Maven106

7.1在Eclipse中集成Maven106

7.1.1在Eclipse中安裝Maven106

7.1.2在Eclipse中設置Maven106

7.1.3在Eclipse中設置Maven配置文件106

7.1.4更改Java環境為JDK108

7.2在Eclipse中管理Maven項目109

7.2.1打開Maven創建的項目109

7.2.2恢復項目依賴庫110

7.2.3一般項目與Maven項目的互相轉換112

7.2.4創建Maven項目helloapp1112

7.2.5使用Maven打包114

7.3管理pom.xml文件115

7.3.1總覽pom.xml115

7.3.2依賴管理116

7.3.3查看依賴關系層次結構117

7.3.4全面查看pom.xml117

7.3.5文本編譯頁面118

本篇參考文獻119

第2篇Spring MVC

第8章構建Web應用程序1238.1Tomcat的下載、安裝和啟停123

8.1.1下載Tomcat123

8.1.2安裝Tomcat123

8.1.3啟動和停止Tomcat服務126

8.2在Eclipse中管理Tomcat126

8.2.1添加Tomcat服務器126

8.2.2配置Tomcat服務器128

8.2.3管理Tomcat服務器130

8.3建立動態Web工程130

8.3.1建立動態Web工程WebHello130

8.3.2庫文件路徑130

8.3.3創建類TestMath.java132

8.3.4創建hello.jsp133

8.3.5目錄結構134

8.4編譯134

8.4.1設置編譯的輸出路徑134

8.4.2編譯項目135

8.5部署137

8.5.1配置部署路徑137

8.5.2部署項目138

8.5.3重新部署141

8.6發布測試141

第9章用Maven構建Web應用程序143

9.1在Eclipse中創建Maven Web項目143

9.2完善項目145

9.2.1修改JDK版本146

9.2.2完善項目目錄147

9.2.3修改編譯版本147

9.2.4修改Project Facets的Java版本147

9.2.5添加Tomcat庫文件148

9.2.6修改Project Facets的Runtimes150

9.2.7修改Project Facets的Dynamic Web Module版本152

9.3庫文件管理153

9.3.1添加Maven依賴庫153

9.3.2Eclipse中的Maven庫153

9.4編寫程序154

9.4.1創建類TestMath.java154

9.4.2創建hello.jsp154

9.4.3目錄結構155

9.5用Eclipse編譯Maven項目156

9.6在Eclipse中部署Maven項目157

9.7用Maven管理項目158

9.7.1設置Maven中的JDK版本158

9.7.2編譯項目158

9.7.3打包項目159

9.7.4自定義打包160

9.8Maven依賴的添加161

9.8.1進入Maven網站161

9.8.2查找依賴的jar包161

9.8.3選擇版本161

9.8.4復制依賴xml文件內容163

9.8.5修改pom.xml163

9.8.6自動下載庫164

9.9動態Web工程與Maven Web項目的區別164

第10章MVC框架166

10.1MVC概述166

10.1.1模型166

10.1.2視圖166

10.1.3控制器166

10.2MVC框架的產生167

10.2.1靜態網頁167

10.2.2動態網頁168

10.2.3JSP技術170

10.2.4Servlet+JSP+JavaBean開發模式172

10.2.5MVC框架實現徹底解耦173

10.3Spring MVC的第一個示例174

10.3.1創建動態Web項目174

10.3.2復制Spring MVC庫文件174

10.3.3配置web.xml接管Web請求174

10.3.4Spring MVC配置文件的框架176

10.3.5配置掃描註解177

10.3.6配置視圖頁面177

10.3.7編寫Controller類177

10.3.8編寫視圖178

10.3.9運行項目178

10.4Web應用與MVC179

10.4.1Web應用模型179

10.4.2Web應用中的MVC179

10.4.3解耦原理180

10.4.4Spring MVC處理請求的過程181

10.5學習MVC框架的思路182

10.5.1函數描述與調用182

10.5.2Web請求182

10.5.3對MVC框架的理解182

第11章Spring MVC中的URL請求調用控制器的方法183

11.1概述183

11.2創建動態Web項目183

11.2.1編寫控制器類183

11.2.2編寫顯示日期的視圖184

11.2.3編寫顯示結果說明的視圖184

11.3配置web.xml攔截URL請求185

11.3.1攔截帶擴展名的請求185

11.3.2攔截所有請求185

11.3.3對靜態資源文件放行186

11.4使用@Controller定義控制器186

11.4.1控制器的定義186

11.4.2Spring MVC對控制器組件的管理186

11.5使用@RequestMapping建立映射關系187

11.5.1@RequestMapping註解187

11.5.2處理多個URL188

11.5.3使用URL模板189

11.5.4用params屬性處理特定請求參數191

11.5.5用method屬性處理HTTP的方法192

11.5.6@RequestMapping的組合註解194

11.5.7@RequestMapping默認的處理方法194

11.6URL請求傳遞參數到控制器195

11.6.1概述195

11.6.2方法支持的參數類型195

11.6.3直接將請求參數名作為控制器類方法的形參196

11.6.4使用@RequestParam綁定URL請求參數196

11.6.5使用URL請求中的占位符參數接收參數197

11.6.6使用Pojo對象接收參數198

11.6.7使用@CookieValue獲取cookie值199

11.6.8使用@RequestHeader獲取報文頭200

11.6.9使用HttpServletRequest、HttpSession獲取參數201

11.7URL請求傳遞JSON數據201

11.7.1概述201

11.7.2測試客戶端202

11.7.3使用@RequestBody接收報文體204

11.7.4使用@ResponseBody返回報文體204

11.7.5使用Pojo對象接收JSON數據204

11.7.6使用Map方式接收JSON數據205

11.7.7使用List方式接收JSON數據205

11.7.8使用字符串方式接收JSON數據205

第12章使用Spring MVC中的控制器調用視圖207

12.1控制器調用視圖207

12.1.1概述207

12.1.2控制器支持的返回類型207

12.1.3返回String類型的視圖名稱208

12.1.4返回ModelAndView對象209

12.1.5返回void209

12.1.6返回Map對象210

12.1.7Spring MVC的轉發與重定向211

12.2控制器返回數據213

12.2.1使用@ResponseBody返回報文體213

12.2.2使用@RequestMapping的produces屬性描述報文體215

12.2.3使用響應文本流Writer輸出文本215

12.2.4使用HttpServletResponse輸出文本216

12.3返回JSON數據217

12.3.1創建Controller類217

12.3.2返回實體對象217

12.3.3返回List對象218

12.3.4返回Map對象218

12.3.5返回字符串219

12.3.6使用@RestController生成RESTful API219

12.4@ResponseStatus註解220

12.4.1改變響應狀態碼220

12.4.2用@RequestMapping自定義異常應用221

12.5返回ResponseEntity類型223

12.5.1返回JSON字符串223

12.5.2返回字符串224

12.5.3設置ContentType響應頭224

12.5.4添加任意響應頭信息225

12.5.5返回指定狀態碼225

12.5.6通過靜態方法獲得響應實體對象226

12.5.7ResponseEntity的替代方法227

12.6控制器傳遞數據到視圖229

12.6.1概述229

12.6.2創建控制器類229

12.6.3通過Model對象傳遞數據230

12.6.4通過Map對象傳遞數據230

12.6.5以Map對象作為返回參數傳遞數據231

12.6.6通過ModelAndView對象傳遞數據231

12.6.7使用@ModelAttribute傳遞和保存數據231

12.6.8使用@SessionAttributes傳遞和保存數據233

12.7用視圖獲取參數值236

12.7.1實例236

12.7.2EL表達式取值237

第13章Spring MVC高級應用238

13.1Spring MVC攔截器簡介238

13.2實現Spring MVC攔截器238

13.2.1實現攔截器的方法238

13.2.2實現HandlerInterceptor接口239

13.2.3實現WebRequestInterceptor接口241

13.3登錄權限驗證243

13.3.1編寫登錄權限驗證攔截器243

13.3.2編寫登錄控制器244

13.3.3配置攔截器247

13.3.4編寫登錄頁面248

13.3.5編寫主頁面248

13.3.6編寫查看圖書頁面249

13.3.7運行結果249

13.4文件上傳250

13.4.1Spring MVC MultipartFile250

13.4.2裝配MultipartResolver處理上傳251

13.4.3復制庫文件251

13.4.4創建上傳頁面251

13.4.5創建上傳成功頁面252

13.4.6編寫上傳控制器類253

13.4.7運行結果254

13.5文件下載255

13.5.1通過ResponseEntity下載文件255

13.5.2通過@ResponseBody返回字節數組257

13.5.3通過原生的HttpServletResponse對象下載文件260

13.6Spring MVC的表單標簽庫262

13.6.1引入表單標簽庫262

13.6.2表單標簽庫中的標簽262

13.6.3表單標簽的用法262

13.6.4表單元素標簽的用法263

13.7Spring MVC表單標簽實例266

13.7.1編寫用戶類266

13.7.2編寫添加用戶頁面267

13.7.3編寫顯示用戶信息頁面269

13.7.4創建UserController控制器類270

13.7.5解決亂碼問題271

13.7.6運行結果272

13.8Spring MVC國際化273

13.8.1軟件國際化概述273

13.8.2國際化方案273

13.8.3存儲國際化信息273

13.8.4取出國際化信息274

13.9基於瀏覽器的國際化274

13.9.1建立資源文件275

13.9.2在login.jsp頁面輸出國際化信息275

13.9.3在welcome.jsp頁面輸出國際化信息276

13.9.4在Spring MVC配置文件中配置國際化支持277

13.9.5編寫用戶類277

13.9.6在程序中獲取國際化信息278

13.9.7運行結果279

13.10基於會話的國際化282

13.10.1配置支持基於會話的國際化282

13.10.2處理語言設置282

13.10.3創建可以選擇語言的登錄頁面283

13.10.4運行結果284

13.11基於會話的國際化(語言設置自動處理)285

13.11.1配置語言設置處理285

13.11.2創建登錄頁面286

13.11.3運行結果287

本篇參考文獻288

第3篇MyBatis ORM框架

第14章MyBatis中的ORM29114.1ORM的概念291

14.1.1對象和關系數據庫291

14.1.2ORM的概念291

14.2JDBC持久化293

14.2.1JDBC持久化的特點293

14.2.2JDBC的體系結構293

14.2.3JDBC的執行流程293

14.2.4DriverManager中的解耦295

14.3JDBC中的對象和關系數據庫296

14.3.1配置庫文件297

14.3.2獲取數據庫連接297

14.3.3關閉數據庫連接298

14.3.4定義對象299

14.3.5定義關系300

14.3.6寫數據庫301

14.3.7讀數據庫302

14.3.8測試303

14.4ORM框架持久化303

14.4.1ORM框架簡介303

14.4.2MyBatis簡介304

14.5MyBatis的用法305

14.5.1配置庫文件305

14.5.2映射信息305

14.5.3映射文件306

14.5.4MyBatis配置文件307

14.5.5調用映射文件中的命令id309

14.5.6約定表字段名與對象屬性名的映射關系312

14.5.7約定表字段的SQL別名與對象屬性名的映射關系313

14.5.8通過resultMap配置嵌套映射關系314

14.5.9MyBatis小結315

第15章MyBatis讀取數據庫316

15.1<select>標簽316

15.1.1輸入參數類型316

15.1.2輸出參數類型317

15.1.3標簽體中的SQL語句317

15.1.4創建映射配置文件317

15.1.5創建測試類318

15.2<select>標簽返回數據318

15.2.1返回實體對象318

15.2.2通過resultMap標示返回返回結果的類型319

15.2.3返回實體對象集合320

15.2.4返回HashMap321

15.2.5返回HashMap集合322

15.2.6返回Map型實體集合322

15.2.7返回Map型Map集合323

15.3resultMap324

15.3.1resultMap簡介324

15.3.2表名與類名映射325

15.3.3表字段與對象屬性映射325

15.3.4表主鍵字段映射326

15.4多表關聯查詢327

15.4.1創建賬戶表account327

15.4.2創建賬戶類Account327

15.4.3創建賬戶映射配置文件accountMapper.xml328

15.4.4創建學生賬戶類StudentAccount329

15.4.5創建學生賬戶映射配置文件StudentAccountMapper.xml329

15.4.6創建課程表course330

15.4.7創建學生課程表student_course330

15.4.8創建課程類Course330

15.4.9創建學生課程類StudentCourse331

15.4.10創建學生課程映射配置文件StudentCourseMapper.xml332

15.4.11映射要素332

15.5一對一關聯映射查詢332

15.5.1用級聯屬性配置映射332

15.5.2關聯子配置嵌套映射334

15.5.3關聯resultMap配置嵌套映射336

15.5.4關聯查詢配置嵌套映射337

15.6一對多關聯映射查詢339

15.6.1集合元素配置嵌套映射339

15.6.2集合resultMap配置嵌套映射342

15.6.3集合查詢配置嵌套映射343

15.7多對多關聯映射查詢345

15.7.1返回多條記錄345

15.7.2集合配置嵌套映射346

15.7.3雙向多對多輸出348

第16章MyBatis寫數據庫350

16.1簡介350

16.1.1MyBatis中的DAO框架350

16.1.2DAO模式351

16.2創建用戶表及用戶類351

16.2.1創建用戶表user351

16.2.2編寫實體類User351

16.3在Mapper文件中定義命令353

16.3.1增加標簽353

16.3.2刪除標簽354

16.3.3修改標簽354

16.3.4查詢標簽354

16.4DAO層調用Mapper映射文件中的命令355

16.4.1MyBatis的構建流程355

16.4.2MyBatis的執行流程356

16.4.3構建SqlSessionFactory357

16.4.4從SqlSessionFactory中獲取SqlSession358

16.4.5通過SqlSession執行命令359

16.5調用Mapper命令示例359

16.5.1增加用戶359

16.5.2刪除用戶360

16.5.3修改用戶信息360

16.5.4查詢用戶信息361

16.5.5運行結果362

16.6原始DAO層開發362

16.6.1Mapper配置文件namespace屬性362

16.6.2Mapper配置文件的加載363

16.6.3定義訪問接口363

16.6.4編寫訪問接口的實現363

16.6.5測試代碼365

16.6.6運行結果366

16.7Mapper動態代理方式DAO層開發366

16.7.1Mapper配置文件中的namespace屬性366

16.7.2Mapper接口367

16.7.3通過動態代理獲取DAO對象368

16.7.4運行結果369

16.8Mapper配置文件的加載370

16.8.1Mapper接口類方式370

16.8.2包路徑方式370

16.8.3資源文件方式370

16.9DAO中的參數傳遞371

16.9.1創建Mapper接口371

16.9.2創建Mapper配置文件371

16.9.3創建測試類372

16.9.4使用實體傳參372

16.9.5使用Map對象傳參373

16.9.6使用順序號傳參374

16.9.7使用@Param註解傳參375

16.9.8使用@Param註解定義的實體參數名傳參376

16.9.9使用List傳參377

16.9.10使用${…}傳參379

第17章MyBatis高級應用381

17.1MyBatis的動態SQL381

17.1.1MyBatis動態標簽381

17.1.2創建Mapper接口381

17.1.3創建測試類382

17.2動態SQL條件判斷382

17.2.1語句說明382

17.2.2根據查詢條件實現動態查詢384

17.2.3使用<choose>標簽實現動態查詢385

17.2.4根據參數值動態更新某些字段387

17.3動態SQL內容處理388

17.3.1where語句處理388

17.3.2用<trim>標簽處理where語句390

17.3.3set語句391

17.3.4bind元素定義參數393

17.3.5<selectKey>標簽394

17.3.6多數據庫廠商支持395

17.4直接執行SQL語句396

17.4.1創建Mapper接口396

17.4.2創建映射文件396

17.4.3創建測試類397

17.4.4查詢單個記錄397

17.4.5查詢多個記錄398

17.4.6修改記錄399

17.4.7增加記錄399

17.4.8刪除記錄400

17.4.9完整代碼401

17.5SQL語句構建器402

17.5.1問題402

17.5.2解決方法402

17.5.3構建器命令詳解403

17.6構建器應用404

17.6.1查詢單個記錄404

17.6.2查詢多個記錄405

17.6.3刪除記錄405

17.6.4增加記錄406

17.6.5修改記錄406

17.7MyBatis註解407

17.7.1簡介407

17.7.2註解命令407

17.7.3註解接口410

17.7.4測試類411

17.8註解SQL的Provider方式412

17.8.1創建Mapper接口412

17.8.2創建SQL提供類413

17.8.3創建測試類413

17.8.4@SelectProvider註解413

17.8.5@InsertProvider註解415

17.8.6@UpdateProvider註解416

17.8.7@DeleteProvider註解418

本篇參考文獻420

第4篇Spring與Spring容器

第18章Spring概述42318.1傳統對象的創建423

18.1.1對象創建者與使用者的關系423

18.1.2創建Maven項目423

18.1.3創建Food類423

18.1.4創建Person1類424

18.1.5測試與小結424

18.2使用工廠創建對象425

18.2.1對象創建者與使用者的關系425

18.2.2創建工廠FoodFactory類425

18.2.3創建Person2類426

18.2.4測試與小結426

18.3使用Spring創建對象427

18.3.1對象創建者與使用者的關系427

18.3.2添加Spring的Maven依賴427

18.3.3創建Person3類427

18.3.4Spring Bean配置428

18.3.5測試與小結429

第19章Spring容器431

19.1控制反轉431

19.2依賴查找432

19.2.1依賴查找的概念432

19.2.2用JDBC獲取數據庫連接432

19.2.3用JNDI獲取數據源433

19.3依賴註入435

19.3.1依賴註入的概念435

19.3.2構造子註入436

19.3.3設置註入437

19.3.4接口註入439

19.3.5小結441

19.4Bean的單例與多例模式442

19.4.1Bean的作用域442

19.4.2餓漢模式和懶漢模式442

19.4.3單例與多例的應用場景442

19.4.4單例測試443

19.4.5多例測試444

19.5Bean的實例化445

19.5.1構造方法445

19.5.2靜態工廠方法446

19.5.3實例化工廠方法446

19.5.4測試447

19.6自動裝配447

19.6.1指定裝配448

19.6.2按類型裝配448

19.6.3按名稱裝配448

19.6.4按構造方法參數類型裝配448

19.6.5全局自動裝配449

19.7容器的生命周期450

19.7.1容器的生命周期概述450

19.7.2容器的啟動450

19.7.3創建Bean452

19.7.4獲取Bean452

19.7.5容器的關閉453

19.8Bean的生命周期453

19.8.1Bean生命周期概述453

19.8.2感知接口454

19.8.3Bean獲取自己的名稱455

19.8.4在Bean中獲取Bean工廠455

19.8.5Bean的初始化與銷毀前事件455

19.8.6配置實現Bean初始化方法455

19.8.7接口實現Bean初始化方法456

19.8.8配置實現Bean銷毀前方法456

19.8.9接口實現Bean銷毀前方法456

19.8.10Bean生命周期測試457

第20章Spring註解配置459

20.1配置Bean的方式459

20.1.1Spring Bean的3種配置方式459

20.1.2XML配置方式459

20.2Spring註解配置460

20.2.1註解的特點460

20.2.2註解與XML配置的區別461

20.2.3配置要掃描的包461

20.2.4註解Spring組件462

20.2.5Bean的作用域463

20.3註解自動裝配463

20.3.1基本類型屬性註入463

20.3.2按類型裝配(@Autowired)464

20.3.3按名稱裝配(@Autowired與@Qualifier)464

20.3.4@Autowired的required屬性464

20.3.5按類型裝配(@Resource)464

20.3.6按名稱裝配(@esource(name="xxx"))465

20.4註解Bean的生命周期465

20.4.1Bean初始化465

20.4.2Bean銷毀前465

20.5基於JavaConfig類的Bean配置465

20.5.1JavaConfig類465

20.5.2加載JavaConfig類啟動容器466

20.6使用JavaConfig類手動裝配467

20.6.1調用創建Bean的方法裝配Bean467

20.6.2通過創建Bean的方法的參數裝配Bean467

20.6.3在創建Bean的方法中直接實例化Bean468

20.7使用JavaConfig類自動裝配468

20.7.1按類型裝配Bean468

20.7.2按名稱裝配Bean468

20.8JavaConfig配置生命周期469

20.8.1Bean初始化469

20.8.2Bean銷毀前469

20.9JavaConfig類實例模式配置469

20.9.1單例模式469

20.9.2多例模式470

20.10JavaConfig類中的組件掃描470

20.10.1默認掃描包470

20.10.2指定掃描包471

20.10.3排除掃描特定類471

20.10.4掃描特定類471

第21章Spring擴展473

21.1概述473

21.2多個配置文件473

21.2.1<import>標簽473

21.2.2@Import註解474

21.2.3@Import ImportSelector474

21.3動態創建Bean475

21.3.1概述475

21.3.2FactoryBean接口476

21.3.3FactoryBean示例476

21.3.4Spring與MyBatis整合中的FactoryBean示例477

21.4動態註冊Bean定義: BeanDefinitionRegistryPostProcessor478

21.4.1概述478

21.4.2BeanDefinitionRegistryPostProcessor接口478

21.4.3BeanDefinitionRegistryPostProcessor示例479

21.4.4配置類後處理器480

21.4.5配置類後處理器的處理機制481

21.5動態註冊Bean定義: ImportBeanDefintionRegistrar482

21.5.1ImportBeanDefintionRegistrar接口482

21.5.2處理機制482

21.5.3ImportBeanDefintionRegistrar示例483

21.6動態修改Bean定義: BeanFactoryPostProcessor485

21.6.1BeanFactoryPostProcessor概述485

21.6.2BeanFactoryPostProcessor示例485

21.7動態修改Bean: BeanPostProcessor487

21.7.1BeanPostProcessor概述487

21.7.2BeanPostProcessor示例488

21.7.3自定義註解的實現489

第22章Spring與MyBatis整合495

22.1創建Maven項目SpringMyBatis495

22.2Spring配置文件496

22.3數據源Bean的管理和配置497

22.3.1數據源依賴包497

22.3.2數據庫信息配置498

22.3.3引入屬性文件498

22.3.4數據源Bean的配置498

22.4會話工廠Bean的管理和配置499

22.4.1會話工廠依賴包499

22.4.2會話工廠Bean的配置499

22.4.3配置掃描Mapper文件的路徑500

22.4.4配置實體類所在的包500

22.4.5指定MyBatis配置文件的位置501

22.5DAO Bean配置管理501

22.5.1單個Mapper DAO Bean501

22.5.2批量Mapper DAO Bean502

22.5.3獲取DAO Bean504

22.6掃描全部Bean管理配置504

22.7事務管理Bean504

22.7.1事務管理依賴配置504

22.7.2事務管理Bean配置505

22.8AspectJ支持自動代理實現AOP功能505

22.9編寫應用505

22.9.1編寫服務類505

22.9.2編寫測試類506

22.10Spring使用的註解507

第23章SSM整合511

23.1創建Maven項目SSMApp511

23.2引入依賴512

23.2.1引入Spring MVC依賴512

23.2.2設置打包插件512

23.3SSM中的Spring整合513

23.3.1啟動Spring513

23.3.2Spring與Spring MVC框架的整合514

23.4編寫控制器514

23.4.1編寫StudentController514

23.4.2添加登錄方法515

23.4.3添加登錄判斷方法515

23.4.4添加主頁面映射515

23.4.5添加查看圖書映射516

23.4.6添加退出方法516

23.5登錄驗證攔截器516

23.5.1攔截器定義516

23.5.2攔截器配置517

23.6在Eclipse中部署測試517

23.7用Maven打包518

23.7.1設置打包方式518

23.7.2設置編譯時依賴518

23.7.3打包519

本篇參考文獻520

第5篇Spring Boot

第24章Spring Boot入門52324.1Spring Boot概述523

24.1.1什麽是Spring Boot523

24.1.2使用Spring Boot的好處523

24.2第一個Spring Boot程序524

24.2.1用Maven構建項目524

24.2.2設置mavenjarplugin版本525

24.2.3更新Maven項目526

24.2.4項目結構527

24.2.5引入父模塊528

23.2.6引入Web模塊528

23.2.7創建Controller類528

24.2.8創建主程序529

24.2.9啟動主程序529

24.2.10總結530

24.2.11Spring Boot的核心特性530

24.3Spring Boot主程序分析530

24.3.1@SpringBootApplication註解531

24.3.2組件定義532

24.3.3組件配置532

24.3.4組件掃描533

24.3.5自定義組件掃描533

24.3.6生成容器啟動掃描533

24.3.7從容器中獲取Bean534

第25章Spring Boot自動裝配536

25.1自動裝配機制536

25.1.1SPI機制536

25.1.2JDBC中的SPI機制536

25.1.3Spring Boot中的類SPI擴展機制539

25.2自動配置包管理540

25.2.1引入機制540

25.2.2註冊機制540

25.2.3註冊邏輯541

25.3自動裝配引入器541

25.3.1自動裝配引入器配置541

25.3.2引入機制542

25.3.3執行機制542

25.4獲得所有自動裝配類的配置543

25.4.1自動裝配類的配置543

25.4.2執行機制544

25.4.3自動裝配類的獲取544

25.5獲得自動裝配類的過濾條件546

25.5.1過濾條件配置546

25.5.2執行機制546

25.5.3過濾條件獲取547

第26章有條件裝配Bean548

26.1概述548

26.1.1Bean的配置方法548

26.1.2Bean的有條件註冊548

26.2無條件創建Bean548

26.2.1創建Spring Boot項目549

26.2.2創建Bean549

26.2.3使用Bean550

26.3條件註解@Conditional551

26.3.1Condition接口與實現552

26.3.2設置環境變量552

26.3.3有條件註冊Bean553

26.4簡化條件註解554

26.4.1概述554

26.4.2屬性條件註解555

26.5將條件註解到類上557

26.5.1類條件註解557

26.5.2示例558

26.6條件自動配置558

26.6.1條件自動配置簡介558

26.6.2創建自動配置類559

26.6.3創建自動配置文件spring.factories559

26.6.4自動配置條件文件560

26.6.5條件成立測試560

26.6.6條件不成立測試561

第27章Spring Boot屬性配置和使用562

27.1默認配置562

27.1.1在類中設置初始值562

27.1.2在自動配置類中設置初始值562

27.2配置文件563

27.2.1配置文件簡介563

27.2.2yml格式配置文件563

27.2.3多環境配置文件565

27.2.4配置文件優先級565

27.3註入配置值566

27.4配置屬性註解567

27.4.1定義屬性配置類567

27.4.2配置Bean的使用567

27.5掃描配置Bean及@ConfigurationProperties569

27.5.1掃描入口569

27.5.2@ComponentScan+@Component569

27.5.3@Configuration+@Import570

27.5.4@Configuration+@Bean571

27.5.5@Configuration+@Bean+@import573

27.5.6@Configuration+@EnableConfigurationProperties575

27.5.7@EnableAutoConfiguration576

第28章自定義Spring Boot Starter578

28.1Spring Boot起步依賴概述578

28.1.1起步依賴機制578

28.1.2為什麽要自定義起步依賴578

28.2創建第三方應用579

28.2.1建立Maven項目579

28.2.2建立Food類579

28.2.3編譯、打包和安裝580

28.3創建自動配置項目580

28.3.1建立foodspringbootstarterautoconfigure項目580

28.3.2添加springbootautoconfigure依賴581

28.3.3添加第三方依賴581

28.3.4建立屬性配置類582

28.3.5建立工廠類582

28.3.6配置自動配置類583

28.3.7配置自動配置類啟動條件583

28.3.8編譯、打包和安裝583

28.4創建啟動項目584

28.4.1啟動模塊概述584

28.4.2建立foodspringbootstarter項目584

28.4.3添加Spring基本起步依賴585

28.4.4添加自動配置模塊依賴585

28.4.5添加第三方應用依賴585

28.4.6編譯、打包和安裝586

28.5創建應用項目586

28.5.1建立foodApp項目586

28.5.2添加起步依賴模塊587

28.5.3建立Person類587

28.5.4配置屬性文件587

28.5.5建立啟動類588

28.5.6測試運行588

28.5.7依賴啟動關系588

第29章Spring Boot集成SSM589

29.1Spring Boot應用啟動器589

29.2初始化工程591

29.2.1建立Spring Boot項目SpringBootSSM591

29.2.2多環境配置591

29.3集成Spring MVC和Tomcat592

29.3.1引入springbootstarterweb啟動依賴592

29.3.2配置信息592

29.3.3配置信息詳解593

29.3.4編寫控制器類595

29.3.5掃描組件595

29.3.6測試Web應用595

29.4集成數據源596

29.4.1引入springbootstarterjdbc起步依賴596

29.4.2引入數據庫驅動依賴596

29.4.3引入數據源依賴596

29.4.4配置屬性597

29.4.5測試數據源597

29.5集成MyBatis598

29.5.1引入mybatisspringbootstarter起步依賴598

29.5.2配置映射文件屬性599

29.5.3註解掃描Mapper接口類599

29.5.4創建學生類600

29.5.5創建學生映射文件601

29.5.6創建學生映射接口603

29.5.7測試MyBatis603

29.6支持JSP604

29.6.1外置容器對JSP的處理604

29.6.2引入依賴605

29.6.3內置容器對JSP的處理605

29.6.4配置屬性606

29.6.5創建JSP文件目錄606

29.6.6訪問JSP文件607

29.6.7創建控制器607

29.6.8JSP頁面熱部署608

29.7Spring攔截器608

29.7.1定義Spring攔截器608

29.7.2註冊Spring攔截器609

29.7.3測試610

29.8熱部署610

29.8.1添加依賴610

29.8.2熱部署啟動測試611

29.9項目打包611

29.9.1打包插件611

29.9.2打包612

29.9.3運行612

29.10打包資源文件613

29.10.1配置資源文件613

29.10.2打包並運行614

29.11JSP項目打包war614

29.11.1打包為war格式614

29.11.2修改依賴615

29.11.3註冊webapp資源目錄615

29.11.4打包616

29.11.5獨立運行616