全书目录:《Spring Boot 实战开发 》(陈光剑 编著)
简介:
image.pngSpring Boot 简介 151.1. 从 Spring 到Spring Boot 161.1.1.
- Spring Boot 简介 15
1.1. 从 Spring 到Spring Boot 16
1.1.1. 从 EJB 到 Spring 16
1.1.2. Spring 框架发展简史 19
1.1.3. Spring 框架的核心模块 21
1.1.4. Spring 新生态 28
1.2. Spring Boot 是什么 29
1.3. Spring Boot 框架组成 30
1.3.1. spring-boot 31
1.3.2. spring-boot-starters 31
1.3.3. spring-boot-autoconfigure 31
1.3.4. spring-boot-actuator 32
1.3.5. spring-boot-tools 32
1.3.6. spring-boot-cli 32
1.4. Spring Boot 极简特性 32
1.5. 约定优于配置极简化理念 34
1.6. Spring 5.0 新特性 36
1.7. Spring Boot 2.0 新特性 36
1.8. Spring Cloud 简介 36
1.9. 最新IntelliJ IDEA 2017.3版本特性 36
1.10. 本章小结 36
- 快速开始 HelloWorld 36
2.1. 创建 Spring Boot 项目 36
2.2. Spring Boot 项目的入口类 42
2.3. 添加 HelloWorldController 44
2.4. Spring Boot应用级注解 @SpringBootApplication 47
2.4.1. Spring Boot配置类注解 @SpringBootConfiguration 48
2.4.2. XML 配置文件 VS. JavaConfig 注解配置 49
2.4.3. 启用自动配置注解 @EnableAutoConfiguration 50
2.4.4. 组件扫描注解 @ComponentScan 51
2.4.5. 导入配置类注解 @Import 52
2.5. 本章小结 52
- 深入理解Spring Boot 自动配置 53
3.1. 传统 SSM 开发回顾 53
3.1.1. 创建 Maven 工程 53
3.1.2. 添加源代码和资源目录 58
3.1.3. 引入项目依赖的JAR包 60
3.1.4. 配置 Spring 上下文spring.xml 63
3.1.5. 配置 SpringMVC 的上下文spring-mvc.xml 66
3.1.6. DispatcherServlet在web.xml中的配置 68
3.1.7. 完整的 web.xml 配置 68
3.1.8. mybatis-generator配置 73
3.1.9. 数据库表结构 74
3.1.10. MapperScanner和SqlSessionFactoryBean配置 75
3.1.11. Service 层和 Controller 层代码 80
3.1.12. 配置 Tomcat 服务器 84
3.1.13. 视图模板层代码 87
3.2. Spring 简化 XML 配置的解决方案 91
3.3. 自动配置的 Spring Boot 93
3.3.1. 条件注解 @Conditional 93
3.3.2. @Conditional注解使用实例 93
3.3.3. 常见条件注解 105
3.3.4. 组合注解 106
3.4. Spring Boot Starters 106
3.5. @EnableAutoConfiguration自动配置原理 108
3.5.1. 自动配置过程 108
3.5.2. spring.factories文件 110
3.5.3. getCandidateConfigurations 方法 117
3.6. FreeMarkerAutoConfiguration自动配置实例分析 118
3.6.1. spring-boot-starter-freemarker工程 118
3.6.2. spring-boot-autoconfigure工程 120
3.7. Spring Boot Autoconfigure 工作原理图 125
3.8. 本章小结 126
- Spring Boot 命令行 CLI 127
4.1. 安装 CLI 127
4.2. 快速开始Hello World 128
4.3. spring命令 131
4.4. 使用@Grab注解下载依赖 133
4.5. beans Groovy DSL 134
4.6. 创建项目命令 spring init 135
4.7. 本章小结 138
- Spring Boot 集成 MyBatis数据库层开发 138
5.1. Java EE 的分层模型 139
5.1.1. 模型层 141
5.1.2. 数据访问对象层 141
5.1.3. 业务逻辑层 141
5.1.4. 控制器层 141
5.1.5. 视图层 141
5.2. MyBatis 简介 141
5.2.1. 概述 142
5.2.2. MyBatis 框架组成 143
5.2.3. 接口层 143
5.2.4. 数据处理层 147
5.2.5. 基础设施层 152
5.3. 项目实战 164
5.3.1. 使用 Spring Boot CLI 创建工程 164
5.3.2. 配置application.properties 176
5.3.3. 使用IDEA 中自带的连接数据库客户端 177
5.3.4. 使用 MyBatis Generator 生成 Dao 层代码 178
5.3.5. 配置MyBatis同时使用 Mapper.xml和注解 183
5.3.6. 使用 MyBatis分页 插件pagehelper 186
5.3.7. 实现查询接口 186
5.3.8. 使用@Select注解 187
5.3.9. Mybatis插件机制 190
5.3.10. 实现分页接口 192
5.3.11. PageHelper工作原理 197
5.3.12. 多表关联查询级联 206
5.4. 本章小结 211
- Spring Boot 集成 JPA数据库层开发 212
6.1. JPA是什么 212
6.1.1. JPA 简介 212
6.1.2. JPA 整体架构 212
6.1.3. JPA 生态 214
6.1.4. JPA 技术栈 217
6.1.5. ORM 框架概述 217
6.2. Hibernate 简介 219
6.2.1. Hibernate 模块组成 219
6.2.2. Hibernate整体架构 219
6.2.3. Hibernate 特性 226
6.2.4. Hibernate 与 MyBatis 简单对比 228
6.3. Spring Data JPA简介 228
6.3.1. Spring Data 项目 229
6.3.2. Spring Data JPA概述 232
6.4. 项目实战 232
6.4.1. Spring Data JPA提供的接口 232
6.4.2. 创建项目 233
6.4.3. 工程导入 IDEA 235
6.4.4. 配置数据库 237
6.4.5. 自动生成 Entity 实体类代码 238
6.4.6. 配置项目数据源信息 248
6.4.7. 实现查询接口 248
6.4.8. 分页查询 253
6.4.9. 多表级联查询 256
6.4.10. 级联类型CascadeType 259
6.4.11. 模糊搜索接口 261
6.4.12. JPQL语法基础 263
6.4.13. JPA常用注解 269
6.5. 本章小结 271
- 开发 Spring Boot Gradle插件实现自动化生成代码脚手架 271
7.1. Gradle 简介 272
7.1.1. Gradle 概述 272
7.1.2. Gradle 特性 273
7.1.3. Gradle 构建生命周期 273
7.1.4. Gradle 仓库 274
7.1.5. 约定优于配置 275
7.1.6. 发布 Gradle 项目生成的构件 275
7.1.7. Groovy 特点简介 276
7.2. Gradle 插件 276
7.2.1. Gradle 插件概述 277
7.2.2. 常用 Gradle插件 277
7.2.3. java 插件 277
7.2.4. application 插件 280
7.3. 项目实战 281
7.3.1. 创建项目 281
7.3.2. 添加依赖 287
7.3.3. 配置上传本地Maven仓库 287
7.3.4. 实现 Plugin 288
7.3.5. 添加插件属性配置 296
7.3.6. 运行测试 297
7.3.7. 在项目中使用kor插件 300
7.4. 本章小结 304
- Spring Boot 使用 Spring MVC 和FreeMarker开发 Web 应用 305
8.1. Spring MVC 简介 305
8.1.1. Servlet 概述 305
8.1.2. MVC 简介 310
8.1.3. Spring、Spring MVC 与 Spring Boot 2.0 312
8.1.4. Spring MVC 框架 313
8.2. Spring MVC 常用注解 317
8.3. 使用FreeMarker模板引擎 319
8.3.1. FreeMarker简介 319
8.3.2. 实现一个分页查询页面 320
8.4. 本章小结 330
- Spring Boot 自定义 SpringMVC配置 331
9.1. 配置父类WebMvcConfigurationSupport 331
9.2. 静态资源处理配置类ResourceHandler 334
9.3. 拦截器配置类HandlerInterceptor 335
9.4. 跨域支持配置类CorsRegistry 337
9.5. 添加视图控制器ViewController 338
9.6. 消息转换器MessageConverter 338
9.7. 数据格式化器 Formatter 340
9.8. 视图解析器ViewResolver配置 340
9.9. 全局异常处理ExceptionHandler 341
9.9.1. 使用 @ControllerAdvice + @ExceptionHandler实现统一异常处理 342
9.9.2. 实现 HandlerExceptionResolver 接口 344
9.10. 定制与优化内置Tomcat容器 347
9.11. 定制 Spring Boot 应用程序启动 Banner 351
9.12. 本章小结 356
- Spring Boot注册 Servlet、Filter 和 Listener 356
10.1. 创建项目 356
10.2. 注册 Servlet 358
10.3. 注册 Filter 362
10.4. 注册 Listener 369
10.5. 本章小结 370
- Spring Boot AOP 面向切面编程 371
11.1. AOP 简介 371
11.2. AOP 核心概念 372
11.3. Spring AOP介绍 374
11.4. 项目实战:实现日志切面 375
11.4.1. 创建项目 375
11.4.2. 添加 aop 依赖aspectjweaver 382
11.4.3. 切面逻辑实现 384
11.4.4. @Pointcut匹配表达式 385
11.4.5. 运行测试 386
11.5. 本章小结 387
- Spring Boot 使用 AOP + Filter实现用户登录鉴权与权限控制 387
12.1. 系统整体架构 387
12.2. 创建工程 389
12.3. 数据库表结构设计 394
12.4. 用户登录逻辑 395
12.5. 登录态鉴权过滤器 401
12.5.1. 用户鉴权逻辑 401
12.5.2. 运行测试 404
12.5.3. 页面展示用户名 406
12.6. AOP实现用户权限管理 407
12.6.1. 功能简介 407
12.6.2. 实现权限控制 407
12.6.3. 无权限页面 410
12.6.4. Pointcut切入点配置 410
12.6.5. 运行测试 411
12.7. 用户注册 412
12.7.1. 用户注册界面 412
12.7.2. 模板代码 412
12.7.3. 前端js代码 413
12.7.4. 后端注册接口 413
12.7.5. 数据后端校验 414
12.7.6. 获取数据校验结果 418
12.7.7. 运行测试 419
12.8. 本章小结 424
- Spring Boot 使用 Security 实现系统的安全认证与权限控制 424
13.1. Spring Security 简介 425
13.1.1. Spring Security概述 425
13.1.2. 基于Form表单登陆认证 426
13.2. Spring Security 核心组件 427
13.2.1. SecurityContextHolder与Security Context 427
13.2.2. 获取当前用户的信息 428
13.2.3. 认证信息类Authentication 429
13.2.4. 认证管理器AuthenticationManager 430
13.2.5. 基于数据库的认证DaoAuthenticationProvider 432
13.2.6. UserDetails与UserDetailsService 433
13.3. 项目实战 435
13.3.1. 初阶 Security: 默认认证用户名密码 435
13.3.2. 中阶 Security:内存用户名密码认证 441
13.3.3. 角色权限控制 445
13.3.4. 进阶 Security: 基于数据库的用户和角色权限 453
13.4. 本章小结 477
- React.js + Spring Boot 开发前后端分离项目 477
14.1. 前后端分离架构 478
14.1.1. 前端简史 478
14.1.2. ECMAScript的历史 478
14.1.3. 从后端走向前端 479
14.1.4. 前后端分离架构 480
14.2. 项目实战 481
14.2.1. 系统功能介绍 482
14.2.2. 实现登陆后端接口 483
14.2.3. 实现登陆前端页面 486
14.2.4. 用户登录状态接口 488
14.2.5. 实现列表展示后端接口 490
14.2.6. 实现列表展示前端页面 491
14.2.7. 前后端集成配置 492
14.2.8. 前后端联调测试 492
14.3. 本章小结 495
- Spring Boot 定时任务 496
15.1. 定时任务概述 496
15.2. 静态定时任务 496
15.3. Cron 表达式 498
15.3.1. Cron简介 498
15.3.2. Cron 表达式字段范围 499
15.3.3. Cron 表达式特殊字符 499
15.3.4. 常用的 Cron 表达式 500
15.4. 动态定时任务 501
15.4.1. 实现SchedulingConfigurer接口 501
15.4.2. 从数据库中读取 cron 表达式值 502
15.4.3. 数据库初始化数据 502
15.4.4. 多线程执行 503
15.4.5. 添加多个任务 504
15.5. 本章小结 505
- Spring Boot 集成 Web Flux 开发 Reactive Web 应用 506
16.1. 响应式宣言 506
16.2. Spring 5 响应式Web框架架构图 506
16.3. 项目实战 508
16.3.1. 创建项目 508
16.3.2. 项目结构 511
16.3.3. 领域实体层 513
16.3.4. 服务层 514
16.3.5. 控制器路由层 515
16.3.6. Reactive Web服务器配置 516
16.3.7. 项目启动入口类 517
16.3.8. 启动运行 517
16.3.9. 测试输出 518
16.4. 本章小结 519
- Spring Boot 应用监控:Actuator与 Admin 519
17.1. Actuator简介 519
17.2. 启用 Actuator 520
17.3. 揭秘Endpoint端点 522
17.3.1. /actuator获取actuator 列表 522
17.3.2. /beans获取 Bean 装配信息 524
17.3.3. /conditions获取自动配置条件信息 526
17.3.4. /configprops获取配置属性信息 527
17.3.5. /env系统运行环境信息 529
17.3.6. /info 应用基本信息 532
17.3.7. /health 获取应用健康信息 532
17.3.8. /loggers系统日志信息 533
17.3.9. /threaddump系统线程转储信息 534
17.3.10. /metrics系统度量指标列表 536
17.3.11. /scheduledtasks系统定时任务信息 537
17.3.12. /trace系统请求跟踪 538
17.3.13. /mappings系统请求 URL 映射信息 539
17.3.14. 启用和禁用端点 541
17.4. 自定义Actuator Endpoint 543
17.4.1. Endpoint接口简介 543
17.4.2. 实现Endpoint接口 547
17.4.3. 继承AbstractEndpoint抽象类 549
17.4.4. 实现健康指标接口HealthIndicator 554
17.4.5. 实现度量指标接口PublicMetrics 555
17.4.6. SystemPublicMetrics成员方法简介 556
17.4.7. 使用 AOP 实现CounterService、GaugeService接口统计方法执行数据 559
17.5. 使用Spring Boot Admin可视化 Actuator 监控数据 564
17.5.1. Spring Boot Admin简介 564
17.5.2. 工作原理简介 568
17.5.3. 创建Spring Boot Admin Server 项目 569
17.5.4. 在 Client 端的 Spring Boot项目中配置使用Admin Server 571
17.6. 本章小结 579
- Spring Boot 应用的测试 580
18.1. 项目准备工作 580
18.1.1. 创建项目 580
18.1.2. 导入项目到 IDEA 581
18.1.3. 设计项目目录结构 581
18.2. 项目配置 582
18.2.1. Gradle构建配置文件 582
18.2.2. 项目属性文件配置 584
18.3. 项目代码开发 584
18.3.1. Entity 层代码 584
18.3.2. Dao 层代码 585
18.3.3. Service 层代码 585
18.3.4. Controller 层代码 586
18.4. 项目分层测试 586
18.4.1. 测试代码目录结构 587
18.4.2. Dao 层测试 588
18.4.3. Service 层测试 589
18.4.4. 使用 Mockito 测试 Service 层代码 590
18.4.5. Controller 层测试 592
18.4.6. JSON接口数据的测试断言 596
18.5. 本章小结 600
- 使用 Docker 构建部署运行 Spring Boot 应用 600
19.1. 创建测试项目 600
19.2. 项目打包成可执行 jar 603
19.3. 定制配置文件启动应用 606
19.4. 项目打包成 war 包 608
19.5. 生产运维 610
19.5.1. 查看JVM参数的值 610
19.5.2. 应用重启 611
19.6. 使用 Docker 构建部署运行Spring Boot应用 611
19.6.1. Docker 简介 611
19.6.2. 环境搭建 613
19.7. Spring Boot 项目 Docker化实战 617
19.7.1. 添加 docker 构建插件 618
19.7.2. 配置 Dockerfile 文件创建自定义的镜像 618
19.7.3. Dockerfile配置说明 620
19.7.4. 构建自定义的应用 Docker镜像 623
19.7.5. 启动 Docker 应用镜像运行 623
19.7.6. 端口映射 624
19.7.7. 运行测试 626
19.8. 本章小结 627
- 附录 I : Spring 5.0 新特性 628
- 附录 II : Spring Boot 2.0 新特性 641
21.1.1. Kotlin 特性支持 641
21.1.2. Spring Boot 2.0.0 M1 Release Notes 642
21.1.3. Spring Boot 2.0.0 M2 Release Notes 648
21.1.4. Spring Boot 2.0.0 M3 Release Notes 651
21.1.5. Spring Boot 2.0.0 M4 Release Notes 652
21.1.6. Spring Boot 2.0.0 M5 Release Notes 655
21.1.7. Spring Boot 2.0.0 M6 Release Notes 657
21.1.8. Spring Boot 2.0.0 M7 Release Notes 660
- 附录 III: Spring Cloud 简介 664
- 附录 IV:最新IntelliJ IDEA 2017.3版本特性 666
- 附录 V:Spring Boot CLI 的 spring init 命令行支持项 667