《Spring Boot趣味实战课》是由电子工业出版社出版的一本关于SpringBoot方面的书籍,作者是刘水镜,主要介绍了关于SpringBoot、SpringBoot实战方面的知识内容,目前在SpringBoot类书籍综合评分为:9.1分。
书籍介绍
内容简介
本书内容非常丰富,不仅涵盖了SpringMVC、MyBatisPlus、SpringDataJPA、SpringSecurity、Quartz等主流框架,整合了MySQL、Druid、Redis、RabbitMQ、Elasticsearch等互联网常用技术与中间件,还涉及单元测试、异常处理、日志、Swagger等技术细节,以及AOP、IOC、自动配置、数据库事务、分布式锁等硬核知识。本书从初始化到部署、监控,实现了软件全生命周期一站式打包解决。本书行文风格深入浅出、通俗易懂、风趣幽默、轻松愉快。从HelloWorld聊到源码分析,从工具使用讲到内部原理,从日常生活说到设计哲学。本着“技术来源于生活,更要回归于生活”的理念,本书通过大量生动、形象的类比将枯燥的技术描绘得“有滋有味”,让你轻松学会这些知识。
目录
- 第1章SpringBoot凭什么成为JVM圈的框架“一哥”1
- 1.1用数据说话1
- 1.1.1市场份额1
- 1.1.2关注度2
- 1.2多方支持3
- 1.2.1官方力推3
- 1.2.2“大厂”背书4
- 1.3打铁还需自身硬5
- 1.3.1高颜值5
- 1.3.2有内涵6
- 1.4要点回顾7
- 第2章兵马未动,粮草先行——码前准备8
- 2.1软件环境8
- 2.2大管家Maven9
- 2.2.1pom文件9
- 2.2.2常用概念11
- 2.3打造一件趁手的兵器13
- 2.3.1设置13
- 2.3.2技巧19
- 2.3.3插件25
- 2.4要点回顾26
- 第3章牛刀小试——五分钟入门SpringBoot27
- 3.1万物皆可HelloWorld27
- 3.1.1创建一个Web工程27
- 3.1.2完成核心代码30
- 3.1.3运行并查看效果32
- 3.2SpringBoot的工程结构33
- 3.2.1结构详解34
- 3.2.2结构分类35
- 3.3珍爱生命,我用Starters35
- 3.3.1没有Starters的日子36
- 3.3.2有了Starters以后37
- 3.3.3什么是Starters37
- 3.4值得拥有的YAML39
- 3.4.1Properties与YAML39
- 3.4.2YAML语法40
- 3.5要点回顾41
- 第4章斗转星移,无人能及——SpringMVC42
- 4.1SpringMVC简介42
- 4.2接收参数的各种方式43
- 4.2.1常用注解44
- 4.2.2准备工作45
- 4.2.3无注解方式46
- 4.2.4@RequestParam方式46
- 4.2.5@PathVariable方式47
- 4.2.6@RequestBody方式47
- 4.3参数校验49
- 4.3.1开启参数校验49
- 4.3.2查看校验效果50
- 4.3.3常用的参数校验注解51
- 4.4原理分析52
- 4.4.1流程分析52
- 4.4.2深入核心53
- 4.5拦截器54
- 4.5.1自定义拦截器55
- 4.5.2拦截器的执行流程57
- 4.5.3多个拦截器的执行顺序59
- 4.6要点回顾62
- 第5章你有RESTStyle吗63
- 5.1你应该懂一点HTTP63
- 5.1.1报文63
- 5.1.2状态码65
- 5.1.3安全性与幂等性65
- 5.1.4协议版本66
- 5.2接口代言人Swagger67
- 5.2.1整合67
- 5.2.2效果69
- 5.2.3常用注解69
- 5.2.4增强版70
- 5.3解密REST71
- 5.3.1REST定义71
- 5.3.2RESTful73
- 5.3.3RESTful实践73
- 5.4URL与URI76
- 5.4.1关系76
- 5.4.2区别77
- 5.5要点回顾77
- 第6章与持久化有关的那些事儿78
- 6.1发展78
- 6.2派系之争79
- 6.3SpringDataJPA81
- 6.3.1简介81
- 6.3.2集成83
- 6.3.3极简的CRUD86
- 6.3.4分页、排序88
- 6.3.5揭秘JPA88
- 6.3.6约定方法91
- 6.3.7自定义93
- 6.3.8审计94
- 6.4MyBatisPlus97
- 6.4.1集成97
- 6.4.2代码生成98
- 6.4.3自定义模板104
- 6.4.4分页107
- 6.4.5条件构造器108
- 6.4.6自动填充112
- 6.5强大的Druid114
- 6.5.1基本原理114
- 6.5.2如何选择连接池115
- 6.5.3配置115
- 6.5.4监控117
- 6.6事务120
- 6.6.1事务的特性120
- 6.6.2脏读、不可重复读、幻读121
- 6.6.3在Spring中使用事务124
- 6.6.4Spring中的事务传播行为125
- 6.6.5拓展135
- 6.7要点回顾135
- 第7章出征前送你3个锦囊136
- 7.1代码的护身符——单元测试136
- 7.1.1一个单元测试的自我修养136
- 7.1.2为什么要写单元测试137
- 7.1.3Junit138
- 7.1.4实战140
- 7.2天有不测风云——异常处理143
- 7.2.1异常体系143
- 7.2.2全局异常处理145
- 7.2.3异常与意外149
- 7.3软件系统的黑匣子——日志149
- 7.3.1日志的作用149
- 7.3.2日志级别150
- 7.3.3常见日志框架151
- 7.3.4配置153
- 7.3.5规范156
- 7.3.6得日志者得天下157
- 7.4要点回顾157
- 第8章SpringBoot的核心原理158
- 8.1你真的懂IOC吗158
- 8.1.1实现方式158
- 8.1.2传统方式vs控制翻转159
- 8.1.3IOC的意义163
- 8.2什么是AOP164
- 8.2.1AOP与OOP164
- 8.2.2为什么用AOP165
- 8.2.3用在什么地方166
- 8.2.4怎么用167
- 8.2.5执行顺序171
- 8.2.6原理简析174
- 8.3为什么一个main方法就能启动项目175
- 8.3.1概览175
- 8.3.2应用启动计时177
- 8.3.3打印Banner178
- 8.3.4创建上下文实例179
- 8.3.5构建容器上下文180
- 8.3.6刷新上下文181
- 8.4比你更懂你的自动配置184
- 8.4.1自动配置原理184
- 8.4.2按需配置191
- 8.5要点回顾192
- 第9章互联网应用性能瓶颈的“万金油”——Redis193
- 9.1初识Redis193
- 9.1.1Redis特性193
- 9.1.2Redis的“看家
- 本领”——快195
- 9.2Redis可以做什么197
- 9.3使用Redis198
- 9.3.1安装Redis198
- 9.3.2默认端口来历199
- 9.3.3集成200
- 9.3.4HelloRedis201
- 9.4更多用法201
- 9.4.1Template201
- 9.4.2opsFor202
- 9.4.3绑定key操作203
- 9.4.4序列化策略203
- 9.5Redis实现分布式锁205
- 9.5.1锁的自我修养206
- 9.5.2实现分布式锁的方式206
- 9.5.3实现分布式锁207
- 9.5.4其他实现方案209
- 9.6要点回顾210
- 第10章安全领域的“扛把子”——SpringSecurity211
- 10.1认证和授权211
- 10.1.1认证211
- 10.1.2授权212
- 10.2SpringSecurity简介212
- 10.3功能一览212
- 10.3.1多种认证方式212
- 10.3.2多种加密方式213
- 10.3.3多种授权方式214
- 10.4动手实践215
- 10.4.1集成215
- 10.4.2自定义用户215
- 10.4.3从数据库中获取用户信息216
- 10.4.4登录成功与失败处理218
- 10.4.5权限控制220
- 10.4.6异常处理222
- 10.4.7记住我224
- 10.4.8常用的安全配置226
- 10.4.9获取当前用户228
- 10.5前景229
- 10.6要点回顾230
- 第11章自律到“令人发指”的定时任务231
- 11.1什么时候需要定时任务231
- 11.2Java中的定时任务232
- 11.2.1单机232
- 11.2.2分布式232
- 11.3SpringTask实战232
- 11.3.1故事背景234
- 11.3.2fixedDelay模式234
- 11.3.3cron模式235
- 11.3.4fixedRate模式236
- 11.4整合Quartz237
- 11.4.1核心概念237
- 11.4.2代码实战237
- 11.4.3Quartz表说明238
- 11.5cron表达式239
- 11.6要点回顾240
- 第12章RabbitMQ从哪里来、是什么、能干什么、怎么干241
- 12.1消息队列的由来241
- 12.2核心概念241
- 12.2.1客户端242
- 12.2.2服务端242
- 12.2.3连接和信道243
- 12.3业务场景244
- 12.4工作模式244
- 12.4.1无交换器参与245
- 12.4.2有交换器参与246
- 12.5动手实践247
- 12.5.1Web管理端247
- 12.5.2代码实战249
- 12.6要点回顾257
- 第13章反其道行之的Elasticsearch258
- 13.1Elasticsearch简介258
- 13.1.1什么是搜索引擎258
- 13.1.2在搜索界的地位259
- 13.1.3为什么是Elasticsearch259
- 13.2核心概念260
- 13.2.1核心对象260
- 13.2.2倒排索引261
- 13.3动手实践262
- 13.3.1版本匹配262
- 13.3.2准备工作262
- 13.3.3Elasticsearch的CRUD264
- 13.3.4ElasticsearchRestTemplate265
- 13.4数据同步267
- 13.4.1定时同步268
- 13.4.2实时同步268
- 13.5要点回顾268
- 第14章项目上线的“后一公里”——部署与监控269
- 14.1部署269
- 14.1.1Jar269
- 14.1.2War270
- 14.1.3DevTools272
- 14.2监控275
- 14.2.1Actuator275
- 14.2.2自定义282
- 14.2.3SpringBootAdmin285
- 14.3要点回顾291
- 第15章你学习技术的“姿势”对吗292
- 15.1技术应该怎么学292
- 15.2不怕麻烦293
- 15.3遇到问题怎么办294
- 15.3.1IDE会帮助你解决问题294
- 15.3.2错误信息会告诉你怎么解决问题294
- 15.3.3借助互联网295
- 15.3.4提问的正确“姿势”296
- 15.4要点回顾296
- 附录A使用Docker配置开发环境297
- Docker常用命令297
- 安装环境299