《疯狂Spring Boot终极讲义》不是一本介绍类似于@PathVariable、@MatrixVariable、@RequestBody、@ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。Spring Boot的核心是什么?它的核心就是自动配置,以及以自动配置为基础与大量第三方后端技术进行整合。因此学习Spring Boot应该重点关注的就是它为整合各种框架所提供的自动配置,包括Spring Boot如何整合各种前端框架,如Spring MVC、Spring WebFlux;Spring Boot如何整合各种持久层技术,如Spring Data、MyBatis、Hibernate/JPA、R2DBC、jOOQ等;Spring Boot如何整合NoSQL技术,如Redis、MongoDB、Neo4j、Cassandra、Solr、Elasticsearch等;Spring Boot如何整合各种消息组件,如ActiveMQ、Artemis、RabbitMQ、Kafka等;Spring Boot如何整合各种缓存机制,如JCache、EhCache、Redis、Hazelcast等;Spring Boot如何整合各种安全框架,如Spring Security、Shiro等,这些都只是Spring Boot整合的典型内容。本书的作用就是带你彻底掌握Spring Boot官方手册中所整合的各种技术,而且本书会讲清楚Spring Boot和Spring框架的关系,带着你揭开Spring Boot的核心:自动配置的面纱,领着你剖析Spring Boot自动配置的源代码实现,然后以此为基础,详细讲解Spring Boot如何整合各种Java后端技术。在掌握了本书知识之后,你不仅能轻松看懂Spring Boot官方手册(其实无须再看了),而且真正掌握了Spring Boot的大成,并通过Spring Boot的整合触类旁通地掌握各种Java后端技术。本书提供了读者答疑交流群,读者可通过扫描本书封面上的二维码,按照指引加入读者答疑交流群。
《疯狂Spring Boot终极讲义》科技图书大IP 疯狂Java李刚新作
剖析Spring Boot自动配置的源代码实现,学会开发自己的自动配置和Starter组件
赠150分钟Spring Boot学习视频及本书配套代码
横跨七大整合方向·完整高并发秒杀系统
- 前端方面,Spring Boot和Spring MVC、Spring WebFlux的整合
- 后端方面,Spring Boot和MyBatis、R2DBC、JPA和JOOtQ等主流持久化技术的整合
- NoSQL方面,与Redis、MongoDB、Neo4j数据库的用法及整合
- 全文检索方面,与Solr、ElasticSearch的功能、用法及整合
- 缓存机制方面,JCache、EhCache、Redis等各种主流缓存框架的用法,及如何在Spring Boot应用中如何利用这些框架提高高并发处理能力
- 消息机制方面,ActiveMQ、Artemis、RabbitMQ、Kafka的功能及用法,及在Spring Boot应用中与这些消息组件的整合,例如在高并发场景中瞬时高并发的削峰
- 应用部署方面,K8s、Docker的功能及用法,并监控Spring Boot应用的运行
- 高并发秒杀系统案例
李刚,十余年软件开发从业经验,疯狂Java实训营创始人,疯狂Java体系原创图书作者。CSDN爆款课程讲师。培训的学生已在腾讯、阿里、华为等名企就职。国内知名高端IT技术图书作家,已出版《疯狂Java讲义》《疯狂Python讲义》《疯狂Android讲义》《轻量级Java Web企业应用实战》《疯狂HTML5/CSS3/JavaScript讲义》等著作。疯狂Java体系图书均已沉淀多年,多部著作印刷数量超过10万册,并被多所985211院校选作教材,部分图书已被转换成繁体中文版,授权到宝岛台湾。
第1章 序幕:Spring Boot入门 1
1.1 Spring Boot简介 2
1.1.1 Java EE应用与Spring 2
1.1.2 为什么要用Spring Boot 3
1.2 个Spring Boot应用 3
1.2.1 准备开发环境 3
1.2.2 创建Spring Boot项目 5
1.2.3 编写控制器 9
1.2.4 运行应用 12
1.2.5 创建可执行的JAR包 18
1.2.6 开发业务组件 20
1.2.7 开发DAO组件 24
1.3 编写单元测试 27
1.3.1 测试RESTful接口 27
1.3.2 模拟Web环境测试控制器 28
1.3.3 测试业务组件 30
1.3.4 使用模拟组件 31
1.4 使用其他构建工具 32
1.4.1 使用Gradle构建工具 32
1.4.2 使用Ant开发Spring Boot应用 35
1.5 本章小结 38
第2章 应用配置与自动配置 39
2.1 SpringApplication与Spring容器 40
2.1.1 类配置与XML配置 40
2.1.2 启动日志和失败分析器 43
2.1.3 延迟初始化 44
2.1.4 自定义Banner 45
2.1.5 设置SpringApplication与流式API 47
2.1.6 事件监听器与容器初始化器 48
2.1.7 配置环境后处理器 50
2.1.8 ApplicationRunner和CommandLineRunner 53
2.1.9 创建非Web应用 55
2.1.10 通过ApplicationArguments访问应用参数 56
2.2 外部配置源 57
2.2.1 配置源的加载顺序与优先级 57
2.2.2 利用JSON参数配置 59
2.2.3 使用YAML配置文件 60
2.2.4 改变配置文件的位置 64
2.2.5 导入额外的配置文件 67
2.2.6 使用占位符 68
2.2.7 读取构建文件的属性 69
2.2.8 配置随机值 70
2.3 类型安全的绑定 71
2.3.1 使用属性处理类获取配置属性 72
2.3.2 为容器中的Bean注入配置属性 75
2.3.3 属性转换 78
2.3.4 校验@ConfigurationProperties 79
2.4 Profile 81
2.4.1 配置和切换Profile 81
2.4.2 添加活动Profile 84
2.4.3 Profile组 85
2.4.4 混合复合类型 86
2.4.5 根据环境自动更新Profile 89
2.5 日志配置 90
2.5.1 理解Spring Boot的日志设计 91
2.5.2 日志级别与格式 92
2.5.3 输出日志到文件 97
2.5.4 日志组 100
2.5.5 关闭控制台日志 100
2.5.6 改用Log4j2日志实现 103
2.5.7 Logback扩展 104
2.6 自动配置概述 106
2.6.1 自动配置的替换原则 106
2.6.2 禁用特定的自动配置 107
2.7 创建自己的自动配置 107
2.7.1 自动配置的本质 108
2.7.2 条件注解 113
2.7.3 自定义条件注解 119
2.7.4 自定义自动配置 121
2.7.5 创建自定义的Starter 126
2.8 热插拔与开发者工具 128
2.8.1 静态模板的重加载 128
2.8.2 添加开发者工具 129
2.8.3 自动重启功能 131
2.8.4 实时重加载 134
2.8.5 全局配置 135
2.9 本章小结 136
第3章 Spring Boot的Web应用支持 137
3.1 Web应用配置 138
3.1.1 设置HTTP端口 138
3.1.2 使用随机的HTTP端口 138
3.1.3 运行时获取HTTP端口 138
3.1.4 启用HTTP响应压缩 141
3.1.5 Web服务器的编程式配置 141
3.2 为应用添加Servlet、Filter、Listener 144
3.2.1 使用Spring Bean添加Servlet、Filter或Listener 144
3.2.2 使用XxxRegistrationBean注册Servlet、Filter或Listener 147
3.2.3 使用ClassPath扫描添加Servlet、Filter或Listener 148
3.2.4 JSP限制 150
3.3 配置内嵌Web服务器 150
3.3.1 切换到其他Web服务器 150
3.3.2 配置SSL 152
3.3.3 配置HTTP/2 154
3.3.4 配置访客日志 156
3.4 管理Spring MVC 157
3.4.1 Spring MVC的自动配置 157
3.4.2 静态资源管理 158
3.4.3 自定义首页和图标 164
3.4.4 使用Thymeleaf模板引擎 165
3.4.5 Thymeleaf的基本语法 168
3.4.6 Spring Boot整合Thymeleaf 170
3.4.7 Spring Boot整合FreeMarker 174
3.4.8 Spring Boot整合JSP 178
3.4.9 路径匹配和内容协商 183
3.4.10 错误处理 184
3.4.11 文件上传和输入校验 188
3.5 国际化支持 193
3.5.1 应用国际化 194
3.5.2 在界面上动态改变语言 197
3.6 管理Spring WebFlux框架 199
3.6.1 Spring WebFlux简介 199
3.6.2 Spring WebFlux的自动配置 201
3.6.3 静态资源和首页、图标 201
3.6.4 使用注解开发Spring WebFlux应用 203
3.6.5 函数式开发WebFlux应用及整合模板引擎 208
3.6.6 错误处理 213
3.7 WebSocket支持 215
3.7.1 使用@ServerEndpoint开发WebSocket 215
3.7.2 使用WebFlux开发WebSocket 218
3.8 优雅地关闭应用 222
3.9 本章小结 222
第4章 RESTful服务支持 224
4.1 开发RESTful服务 225
4.1.1 基于JSON的RESTful服务 225
4.1.2 基于XML的RESTful服务 226
4.1.3 Spring Boot内置的JSON支持 229
4.2 RESTful服务的相关配置 232
4.2.1 自定义Jackson的ObjectMapper 232
4.2.2 自定义JSON序列化器和反序列化器 233
4.2.3 使用HttpMessageConverters更换转换器 237
4.2.4 跨域资源共享 239
4.3 RESTful客户端 241
4.3.1 使用RestTemplate调用RESTful服务 242
4.3.2 定制RestTemplate 247
4.3.3 使用WebClient调用RESTful服务 249
4.3.4 WebClient底层的相关配置 252
4.4 本章小结 253
第5章 访问SQL数据库 254
5.1 整合Spring Data JPA 255
5.1.1 Spring Data的设计和核心API 255
5.1.2 Spring Data JPA基本功能 258
5.1.3 数据源配置详解 262
5.1.4 方法名关键字查询 267
5.1.5 指定查询语句和命名查询 273
5.1.6 自定义查询 278
5.1.7 Example查询 281
5.1.8 Specification查询 285
5.2 直接整合JDBC 288
5.3 整合Spring Data JDBC 294
5.4 整合MyBatis 299
5.4.1 扫描Mapper组件 299
5.4.2 直接使用SqlSession 303
5.4.3 配置MyBatis 305
5.4.4 扩展MyBatis 307
5.5 整合jOOQ 307
5.5.1 生成代码 307
5.5.2 使用DSLContext操作数据库 310
5.5.3 jOOQ高级配置 322
5.6 整合R2DBC 322
5.6.1 使用DatabaseClient 323
5.6.2 使用R2DBC的Repository 324
5.7 使用JTA管理分布式事务 329
5.7.1 理解JTA分布式事务 329
5.7.2 使用Atomikos管理MyBatis多数据源应用 331
5.7.3 使用Atomikos管理Spring Data JPA多数据源应用 339
5.7.4 使用Java EE容器提供的事务管理器 345
5.8 初始化数据库 346
5.8.1 基于Spring Data JPA的自动建表 346
5.8.2 执行SQL脚本初始化数据库 347
5.8.3 使用R2DBC初始化数据库 349
5.9 本章小结 350
第6章 操作NoSQL数据库 352
6.1 整合Redis 353
6.1.1 Redis源代码编译、安装与配置 353
6.1.2 使用Redis 355
6.1.3 连接相关命令 357
6.1.4 key相关命令 358
6.1.5 String相关命令 359
6.1.6 List相关命令 360
6.1.7 Set相关命令 362
6.1.8 ZSet相关命令 363
6.1.9 Hash相关命令 366
6.1.10 事务相关命令 368
6.1.11 发布/订阅相关命令 369
6.1.12 Lettuce用法简介 370
6.1.13 使用RedisTemplate操作Redis 380
6.1.14 使用Spring Data Redis 382
6.1.15 连接多个Redis服务器 390
6.2 整合MongoDB 390
6.2.1 下载和安装MongoDB 390
6.2.2 MongoDB副本集配置 392
6.2.3 MongoDB安全配置 393
6.2.4 MongoDB用法简介 397
6.2.5 连接MongoDB与MongoTemplate 407
6.2.6 使用MongoDB的Repository 409
6.2.7 连接多个MongoDB服务器 418
6.3 整合Neo4j 419
6.3.1 理解图形数据库 419
6.3.2 下载和安装Neo4j 423
6.3.3 配置Neo4j 425
6.3.4 CQL概述 427
6.3.5 使用CREATE创建节点 428
6.3.6 使用MATCH查询节点、属性 431
6.3.7 使用CREATE创建关系 437
6.3.8 使用MATCH查询关系 440
6.3.9 使用DELETE删除节点或关系 442
6.3.10 使用REMOVE删除属性或标签 444
6.3.11 使用SET添加、更新属性或添加标签 445
6.3.12 使用UNION和UNION ALL计算并集 446
6.3.13 操作索引 448
6.3.14 操作约束 450
6.3.15 使用FOREACH、UNWIND处理列表 451
6.3.16 连接Neo4j与Neo4jTemplate 453
6.3.17 使用Neo4j的Repository 455
6.3.18 连接多个Neo4j服务器 465
6.4 整合Cassandra 466
6.4.1 Cassandra数据模型 466
6.4.2 Cassandra存储引擎 469
6.4.3 下载和安装Cassandra 470
6.4.4 配置Cassandra 472
6.4.5 管理keyspace 473
6.4.6 管理表 475
6.4.7 CQL的DML 478
6.4.8 集合类型与用户定义类型 481
6.4.9 索引操作及索引列查询 487
6.4.10 连接Cassandra与CassandraTemplate 488
6.4.11 使用Cassandra的Repository 491
6.4.12 连接多个Cassandra服务器 500
6.5 整合Solr 500
6.5.1 LIKE模糊查询与全文检索 500
6.5.2 反向索引库与Lucene 501
6.5.3 下载和安装Solr 502
6.5.4 管理Solr的Core 506
6.5.5 使用SolrClient连接Solr 513