Spring Boot实战派
  • 推荐23
  • 收藏27
  • 浏览29.6K

Spring Boot实战派

龙中华 (作者) 

  • 书  号:978-7-121-37736-5
  • 出版日期:2019-11-19
  • 页  数:432
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:吴宏伟
纸质版 ¥109.00
本书针对Spring Boot 2.0以上版本,采用“知识点+实例”的形式编写。通过“58个基于知识的实例 + 2个综合性的项目”,深入地讲解Spring Boot的技术原理、知识点和具体应用。把晦涩难懂的理论用实例展现出来,使得读者对知识的理解变得非常容易,同时也立即学会如何使用它。
要成为一本有温度的书,只做到上面这些还远远不够。所以,本书花费大量的力气对比讲解多种同类技术的知识、使用和区别,读者可以根据自己的喜欢进行技术选型;还讲解了时下流行的接口架构风格RESTFUL、用来实现高并发的Redis、用来实现系统间通信的中间件RabbitMQ。最后两章融合了本书所讲知识点,讲解了两个常用又实用的实战项目。
本书适合所有对Spring Boot感兴趣的读者阅读。
版本点新:针对Spring Boot 2.0以上版本
体例科学:用“知识点+实例”形式编写
实例丰富:58个基于实例 + 2个综合项目
对比选优:对比讲解多种同类技术、便于技术选型;
整合融通:Spring Security和Shiro、Elasticsearch和Solr、Redis、RabbitMQ

目录

入 门 篇

第1章 进入Spring Boot世界 2
1.1 认识Spring Boot 2
1.1.1 什么是Spring Boot 2
1.1.2 Spring、Spring Boot、Spring Cloud的关系 4
1.1.3 Spring Boot的特色 5
1.1.4 Spring Boot支持的开发语言 6
1.1.5 学习Spring Boot的前景展望 6
1.2 学习Spring Boot的建议 7
1.2.1 看透本书理论,模仿实战例子 7
1.2.2 利用开发工具自动学习 7
1.2.3 发现新功能的方法 8
1.2.4 建立高阶的思维方式 9
1.2.5 控制版本,降低犯错的代价 10
1.2.6 获取最新、最全的资料 11
1.2.7 学会自己发现和解决问题 11
1.2.8 善于提问,成功一半 12
第2章 准备开发环境 14
2.1 搭建环境 14
2.1.1 安装Java开发环境JDK 14
2.1.2 配置JDK的环境变量 15
2.2 熟悉Maven 18
2.2.1 安装及配置Maven 18
2.2.2 认识其中的pom.xml文件 19
2.2.3 Maven的运作方式 23
2.2.4 配置国内仓库 23
第3章 使用开发工具 25
3.1 安装开发工具IDEA及插件 25
3.1.1 安装IDEA 25
3.1.2 配置IDEA的Maven环境 27
3.1.3 安装Spring Assistant插件 27
3.1.4 安装插件Lombok 28
3.2 实例1:用Spring Boot输出“Hello World” 30
3.2.1 构建Spring Boot项目 30
3.2.2 编写控制器,实现输出功能 31
3.2.3 在IDEA中运行程序 33
3.2.4 打包成可执行的JAR包 33
3.3 在Eclipse中开发Spring Boot应用程序 35
3.3.1 安装Eclipse 35
3.3.2 安装Spring Tools 4插件 35
3.3.3 配置Eclipse的Maven环境 36
3.3.4 创建Spring Boot项目 37
3.4 了解Spring官方开发工具STS 37
3.5 必会的IDEA实用技能 38
3.5.1 智能提示代码 38
3.5.2 自动提示参数 39
3.5.3 实现自动转义 39
3.5.4 自定义高复用代码块 40
3.5.5 设置注释信息 41
3.5.6 超能的“Alt+Enter”快捷键 42
3.5.7 使用全局配置 42
3.5.8 自动生成语句 43
3.6 比较IDEA与Eclipse 44
3.7 如何使用本书源代码 47
3.7.1 在IDEA中使用 47
3.7.2 在Eclipse(STS)中使用 47

基 础 篇

第4章 Spring Boot基础 50
4.1 了解Spring Boot 50
4.1.1 了解Spring Boot项目结构 50
4.1.2 了解Spring Boot的入口类 51
4.1.3 了解Spring Boot的自动配置 52
4.1.4 了解Spring Boot热部署 52
4.1.5 实例2:定制启动画面 53
4.2 Spring Boot的常用注解 54
4.2.1 什么是注解式编程 55
4.2.2 了解系统注解 55
4.2.3 Spring Boot的常用注解 56
4.3 使用配置文件 61
4.3.1 实例3:演示如何使用application.yml文件 62
4.3.2 实例4:演示如何使用application.properties文件 65
4.3.3 实例5:用application.yml和application.properties配置多环境 67
4.4 了解Spring Boot的Starter 69
4.4.1 官方的Starter 69
4.4.2 使用Starter 70
第5章 分层开发Web应用程序 71
5.1 应用程序分层开发模式——MVC 71
5.1.1 了解MVC模式 71
5.1.2 MVC和三层架构的关系 72
5.2 使用视图技术Thymeleaf 73
5.2.1 认识Thymeleaf 73
5.2.2 基础语法 75
5.2.3 处理循环遍历 78
5.2.4 处理公共代码块 80
5.2.5 处理分页 81
5.2.6 验证和提示错误消息 82
5.2.7 实例6:编写Thymeleaf视图以展示数据 83
5.3 使用控制器 85
5.3.1 常用注解 85
5.3.2 将URL映射到方法 86
5.3.3 处理HTTP请求方法 87
5.3.4 处理内容类型 89
5.3.5 方法中参数的使用 90
5.4 理解模型 93
5.5 实例7:实现MVC模式的Web应用程序 94
5.5.1 添加依赖 94
5.5.2 创建实体模型 95
5.5.3 创建控制器 95
5.5.4 创建用于展示的视图 96
5.6 验证数据 96
5.6.1 认识内置的验证器Hibernate-validator 96
5.6.2 自定义验证功能 98
5.6.3 实例8:验证表单数据并实现数据的自定义验证 99
第6章 响应式编程 103
6.1 认识响应式编程 103
6.1.1 什么是WebFlux 103
6.1.2 比较MVC和WebFlux 103
6.1.3 认识Mono和Flux 105
6.1.4 开发WebFlux的流程 106
6.2 实例9:用注解式开发实现Hello World 107
6.2.1 配置WebFlux依赖 107
6.2.2 编写控制器 107
6.3 实例10:用注解式开发实现数据的增加、删除、修改和查询 108
6.3.1 创建实体类 108
6.3.2 编写控制器 108
6.3.3 测试API功能 110
6.4 实例11:用响应式开发WebFlux 111
6.4.1 编写处理器类Handler 111
6.4.2 编写路由器类Router 112
6.5 实例12:用WebFlux模式操作MongoDB数据库,实现数据的增加、删除、修改和查询功能112
6.5.1 添加依赖 112
6.5.2 创建实体类 113
6.5.3 编写接口 113
6.5.4 编写增加、删除、修改和查询
数据的API 113

进 阶 篇

第7章 Spring Boot进阶 118
7.1 面向切面编程AOP 118
7.1.1 认识Spring AOP 118
7.1.2 实例13:用AOP方式管理日志 119
7.2 认识IoC容器和Servlet容器 121
7.2.1 认识容器 121
7.2.2 实例14:用IoC管理Bean 123
7.2.3 实例15:用Servlet处理请求 125
7.3 过滤器与监听器 126
7.3.1 认识过滤器 126
7.3.2 实例16:实现过滤器 128
7.3.3 认识监听器 128
7.3.4 实例17:实现监听器 129
7.4 自动配置 130
7.4.1 自定义入口类 130
7.4.2 自动配置的原理 131
7.4.3 实例18:自定义Starter 133
7.5 元注解 136
7.5.1 了解元注解 136
7.5.2 实例19:自定义注解 137
7.6 异常处理 138
7.6.1 认识异常处理 138
7.6.2 使用控制器通知 141
7.6.3 实例20:自定义错误处理控制器 142
7.6.4 实例21:自定义业务异常类 143
7.7 单元测试 145
7.7.1 了解单元测试 145
7.7.2 Spring Boot 的测试库 145
7.7.3 快速创建测试单元 149
7.7.4 实例22:Controller层的单元测试 150
7.7.5 实例23:Service层的单元测试 153
7.7.6 实例24:Repository层的单元测试 154
第8章 用ORM操作SQL数据库 156
8.1 认识Java的数据库连接模板JDBCTemplate 156
8.1.1 认识JDBCTemplate 156
8.1.2 实例25:用JDBCTemplate
实现数据的增加、删除、修改和查询 157
8.1.3 认识ORM 161
8.2 JPA——Java持久层API 161
8.2.1 认识Spring Data 161
8.2.2 认识JPA 162
8.2.3 使用JPA 164
8.2.4 JPA注解和属性介绍 165
8.2.5 实例26:用JPA构建实体数据表 167
8.3 认识JPA的接口 169
8.3.1 JPA接口JpaRepository 169
8.3.2 分页排序接口PagingAndSortingRepository 169
8.3.3 数据操作接口CrudRepository 170
8.3.4 分页接口Pageable和Page 170
8.3.5 排序类Sort 171
8.4 JPA的查询方式 171
8.4.1 约定方法名 171
8.4.2 JPQL 173
8.4.3 原生SQL 174
8.4.4 Specifications 175
8.4.5 ExampleMatcher 177
8.4.6 谓语QueryDSL 177
8.4.7 NamedQuery 177
8.5 实例27:用JPA开发文章管理模块 178
8.5.1 实现文章实体 178
8.5.2 实现数据持久层 179
8.5.3 实现服务接口和服务接口的实现类 179
8.5.4 实现增加、删除、修改和查询的控制层API功能 180
8.5.5 实现增加、删除、修改和查询功能的视图层 182
8.6 实现自动填充字段 185
8.7 掌握关系映射开发 187
8.7.1 认识实体间关系映射 187
8.7.2 实例28:实现“一对一”映射 188
8.7.3 实例29:实现“一对多”映射 192
8.7.4 实例30:实现“多对多”映射 195
8.8 认识MyBatis——Java数据持久层框架 197
8.8.1 CRUD注解 198
8.8.2 映射注解 198
8.8.3 高级注解 199
8.9 实例31:用MyBatis实现数据的增加、删除、修改、查询和分页 200
8.9.1 创建Spring Boot项目并引入依赖 201
8.9.2 实现数据表的自动初始化 201
8.9.3 实现实体对象建模 202
8.9.4 实现实体和数据表的映射关系 202
8.9.5 实现增加、删除、修改和查询功能 203
8.9.6 配置分页功能 204
8.9.7 实现分页控制器 205
8.9.8 创建分页视图 206
8.10 比较JPA与MyBatis 207
第9章 接口架构风格——RESTful 209
9.1 REST——前后台间的通信方式 209
9.1.1 认识REST 209
9.1.2 认识HTTP方法与CRUD动作映射 210
9.1.3 实现RESTful风格的数据增加、删除、修改和查询 210
9.2 设计统一的RESTful风格的数据接口 212
9.2.1 版本控制 212
9.2.2 过滤信息 213
9.2.3 确定HTTP方法 213
9.2.4 确定HTTP的返回状态 213
9.2.5 定义统一返回格式 214
9.3 实例32:为APP、PC、H5网页提供统一风格的API 214
9.3.1 实现响应的枚举类 214
9.3.2 实现返回的对象实体 215
9.3.3 封装返回结果 215
9.3.4 统一处理异常 215
9.3.5 编写测试控制器 219
9.3.6 实现数据的增加、删除、修改和查询控制器 220
9.3.7 测试数据 221
9.4 实例33:用Swagger实现接口文档 222
9.4.1 配置Swagger 222
9.4.2 编写接口文档 224
9.5 用RestTemplate发起请求 224
9.5.1 认识RestTemplate 224
9.5.2 实例34:用RestTemplate发送GET请求 225
9.5.3 实例35:用RestTemplate发送POST请求 228
9.5.4 用RestTemplate发送PUT和DELETE请求 231
第10章 集成安全框架,实现安全认证和授权 233
10.1 Spring Security——Spring的安全框架 233
10.1.1 认识Spring Security 233
10.1.2 核心类 235
10.2 配置Spring Security 240
10.2.1 继承WebSecurityConfigurer-Adapter 240
10.2.2 配置自定义策略 240
10.2.3 配置加密方式 242
10.2.4 自定义加密规则 242
10.2.5 配置多用户系统 242
10.2.6 获取当前登录用户信息的几种方式 244
10.3 实例36:用Spring Security实现后台登录及权限认证功能 246
10.3.1 引入依赖 246
10.3.2 创建权限开放的页面 246
10.3.3 创建需要权限验证的页面 247
10.3.4 配置Spring Security 247
10.3.5 创建登录页面 248
10.3.6 测试权限 249
10.4 权限控制方式 249
10.4.1 Spring EL权限表达式 249
10.4.2 通过表达式控制URL权限 250
10.4.3 通过表达式控制方法权限 252
10.4.4 实例37:使用JSR-250注解 254
10.4.5 实例38:实现RBAC权限模型 256
10.5 认识JWT 258
10.6 实例39:用JWT技术为Spring Boot
的API增加认证和授权保护 260
10.6.1 配置安全类 260
10.6.2 处理注册 261
10.6.3 处理登录 262
10.6.4 测试多方式注册和登录 264
10.6.5 测试token方式登录和授权 265
10.7 Shiro——Apache通用安全框架 266
10.7.1 认识Shiro安全框架 266
10.7.2 认识Shiro的核心组件 267
10.8 实例40:用Shiro实现管理后台的动态权限功能 267
10.8.1 创建实体 267
10.8.2 实现视图模板 270
10.8.3 进行权限配置 271
10.8.4 实现认证身份功能 271
10.8.5 测试权限 272
10.9 对比Spring Security与Shiro 273
第11章 在Spring Boot中使用Redis实现高并发 275
11.1 认识Spring Cache 275
11.1.1 声明式缓存注解 276
11.1.2 实例41:用Cache进行缓存管理 278
11.1.3 整合Ehcache 281
11.1.4 整合Caffeine 281
11.2 认识Redis 282
11.2.1 对比Redis与Memcached 282
11.2.2 Redis的适用场景 285
11.3 Redis的数据类型 285
11.4 用RedisTemplate操作Redis的5种数据类型 287
11.4.1 认识opsFor方法 287
11.4.2 实例42:操作字符串 287
11.4.3 实例43:操作散列 290
11.4.4 实例44:操作列表 294
11.4.5 实例45:操作集合 298
11.4.6 实例46:操作有序集合Zset 301
11.4.7 比较RedisTemplate和StringRedisTemplate 306
11.5 实例47:用Redis和MyBatis完成缓存数据的增加、删除、修改、查询功能 306
11.5.1 在Spring Boot中集成Redis 306
11.5.2 配置Redis类 307
11.5.3 创建测试实体类 308
11.5.4 实现实体和数据表的映射关系 309
11.5.5 创建Redis缓存服务层 309
11.5.6 完成增加、删除、修改和查询测试API 310
11.6 实例48:用Redis和JPA实现缓存文章和点击量 311
11.6.1 实现缓存文章 311
11.6.2 实现统计点击量 312
11.6.3 实现定时同步 312
11.7 实例49:实现分布式Session 313
11.7.1 用Redis实现Session共享 313
11.7.2 配置Nginx实现负载均衡 314
第12章 用RabbitMQ实现系统间的数据交换 316
12.1 认识RabbitMQ 316
12.1.1 介绍RabbitMQ 316
12.1.2 使用场景 317
12.1.3 特性 318
12.2 RabbitMQ的基本概念 318
12.2.1 生产者、消费者和代理 318
12.2.2 消息队列 319
12.2.3 交换机(Exchange) 319
12.2.4 绑定 320
12.2.5 通道 321
12.2.6 消息确认 321
12.3 RabbitMQ的六种工作模式 321
12.3.1 简单模式 321
12.3.2 工作队列模式 321
12.3.3 交换机模式 322
12.3.4 Routing转发模式 322
12.3.5 主题转发模式 322
12.3.6 RPC模式 323
12.4 认识AmqpTemplate接口 323
12.4.1 发送消息 324
12.4.2 接收消息 324
12.4.3 异步接收消息 325
12.5 在Spring Boot中集成RabbitMQ 325
12.5.1 安装RabbitMQ 325
12.5.2 界面化管理RabbitMQ 326
12.5.3 在Spring Boot中配置RabbitMQ 327
12.6 在Spring Boot中实现RabbitMQ
的4种发送/接收模式 328
12.6.1 实例50:实现发送和接收队列 328
12.6.2 实例51:实现发送和接收对象 330
12.6.3 实例52:实现用接收器接收多个主题 331
12.6.4 实例53:实现广播模式 334
12.7 实例54:实现消息队列延迟功能 336
第13章 使用NoSQL数据库实现搜索引擎 339
13.1 Elasticsearch——搜索应用服务器 339
13.1.1 什么是搜索引擎 339
13.1.2 用数据库实现搜索功能 339
13.1.3 认识Elasticsearch 343
13.1.4 Elasticsearch应用案例 343
13.1.5 对比Elasticsearch与MySQL 343
13.1.6 认识ElasticSearchRepository 344
13.1.7 认识ElasticsearchTemplate 345
13.1.8 认识注解@Document 345
13.1.9 管理索引 347
13.2 实例55:用ELK管理Spring Boot应用程序的日志 348
13.2.1 安装Elasticsearch 348
13.2.2 安装Logstash 349
13.2.3 安装Kibana 350
13.2.4 配置Spring Boot项目 350
13.2.5 创建日志计划任务 351
13.2.6 用Kibana查看管理日志 352
13.3 实例56:在Spring Boot中实现增加、
删除、修改、查询 文档的功能 353
13.3.1 集成Elasticsearch 353
13.3.2 创建实体 353
13.3.3 创建增加、删除、修改和查询API 355
13.4 Elasticsearch查询 356
13.4.1 自定义方法 356
13.4.2 精准查询 357
13.4.3 模糊查询 359
13.4.4 范围查询 362
13.4.5 组合查询 362
13.4.6 分页查询 363
13.4.7 聚合查询 364
13.5 实例57:实现产品搜索引擎 365
13.6 Solr——搜索应用服务器 367
13.6.1 了解Solr 367
13.6.2 安装配置Solr 367
13.6.3 整合Spring Boot和Solr 368
13.7 实例58:在Solr中实现数据的增加、删除、修改和查询 369

13.7.1 创建User类 369
13.7.2 测试增加、删除、修改和查询功能 369
13.8 对比Elasticsearch和Solr 372

项目实战篇

第14章 实例59:开发企业级通用的后台系统 376
14.1 用JPA实现实体间映射关系 376
14.1.1 创建用户实体 376
14.1.2 创建角色实体 377
14.1.3 创建权限实体 378
14.2 用Spring Security实现动态授权(RBAC)功能 380
14.2.1 实现管理(增加、删除、修改和
查询)管理员角色功能 380
14.2.2 实现管理权限功能 381
14.2.3 实现管理管理员功能 383
14.2.4 配置安全类 384
14.2.5 实现基于RBAC权限控制
功能 386
14.3 监控Spring Boot应用 387
14.3.1 在Spring Boot中集成Actuator 387
14.3.2 在Spring Boot中集成Spring Boot admin应用监控 390
14.3.3 在Spring Boot中集成Druid连接池监控 392
第15章 实例60:实现一个类似“京东”的电子商务商城 394
15.1 用Spring Security实现会员系统 394
15.1.1 实现会员实体 394
15.1.2 实现会员接口 395
15.1.3 实现用户名、邮箱、手机号多方式注册功能 396
15.1.4 实现用MQ发送会员注册验证邮件 398
15.1.5 实现用户名、邮箱、手机号多方式登录功能 399
15.2 整合会员系统(Web、APP多端多方式注册登录)+后台系统 400
15.3 实现购物系统 401
15.3.1 设计数据表 401
15.3.2 实现商品展示功能 402
15.3.3 实现购物车功能 403
15.3.4 用Redis实现购物车数据持久化 404
15.4 用Redis实现分布式秒杀系统 406
15.4.1 实现抢购功能,解决并发超卖问题 406
15.4.2 缓存页面和限流 409
15.5 用RabbitMQ实现订单过期取消功能 409
15.6 实现结算和支付功能 411
15.6.1 实现结算生成订单功能 411
15.6.2 集成支付 412



本书勘误

印次
  • 页码:55  •  印次: 3

    你好!表4-1系统注解中的@SuppressWarnings拼写有误。

    Sun 提交于 2020/6/5 20:18:58
    吴宏伟 确认于 2020/9/3 9:11:25
  • 页码:163  •  印次: 1

    163页最下面的示例中id的注解写错位置了。

    古或今 提交于 2020/1/27 22:52:23
    吴宏伟 确认于 2020/9/3 9:06:34

读者评论

  • 请问14章实例的静态资源在哪里下载?

    darren发表于 2023/6/15 19:54:26
  • 书中例子38的RbacServiceImpl类中,principal instanceof UserDetails返回值是false,这里是什么意思呢,麻烦解释啊,谢谢。

    jingzhe发表于 2022/9/30 4:36:04
  • 下载资源文件已损坏啊

    lin发表于 2022/2/25 11:52:01
    • 可以下载解压啊

      Jackdfsffds发表于 2022/5/10 15:28:54
    • @Jackdfsffds 你下载下来;了么?

      子轩发表于 2022/11/7 19:16:07
  • 跟着书敲的05/mvcdemo 一直报错 后来把您写的代码资源跑一遍,还是报错
    ERROR 17968 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "mvcdemo": Error resolving template [mvcdemo], template might not exist or might not be accessible by any of the configured Template Resolvers

    org.thymeleaf.exceptions.TemplateInputException: Error resolving template [mvcdemo], template might not exist or might not be accessible by any of the configured Template Resolvers

    ovoowo发表于 2021/12/29 13:37:56
  • 你好,实例代码没有静态资源吗

    zhouchangzhen发表于 2021/12/14 17:41:00

相关图书

写给大忙人的现代JavaScript

(德国)HORSTMANN, CAY S. (作者) 浙江阿里巴巴聚橙技术发展有限公司 (译者)

本书是一本简明的现代 JavaScript 教程,不仅涵盖函数式编程、JS 语法、JS 库等基础性内容,还介绍了国际化、异步编程、标准模块系统、元编程等较为复杂...

¥109.00

基于Bert模型的自然语言处理实战

李金洪 (作者)

2018年底谷歌公司AI团队新发布的BERT模型,在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且还在11种不...

¥139.00

Flutter企业级应用开发实战

郭歆伊 (作者)

本书是一本可供国内企业参考落地的Flutter技术图书。闲鱼技术团队在实际的技术落地过程中,既享受了Flutter研发效能带来的红利,也经历了无数的技术挑战。本...

¥89.00

JavaScript 二十年

王译锋 (作者)

本书主要讲述了从 1995 年到 2015 年这20年间,JavaScript在创建、设计和演变方面所经历的过程。全书分为4个部分,每个部分都涵盖了 JavaS...

¥79.00

数据分析实用教程

刘政 罗应婷 姚新军 (作者)

本书共 14 章,内容涵盖:统计学的基本概念、推断性统计的相关理论和实例、方差分析、相关分析与回归分析、Logistic 回归、主成分分析与因子分析、聚类分析、...

¥99.00

Flink实战派(双色版)

龙中华 (作者)

本书针对Flink 1.11版本和Alink 1.2版本,采用“知识点+实例”的形式编写,包括47个基于知识点的实例和1个综合项目实例。 第1章对大数据和人工...