## 1.1 内容介绍 ​ 本书系统介绍了Spring Boot 2 的主要技术,侧重两个方面,一方面是极速开发一个WEB应用系统(1到7章,包含了Spring介绍,MVC,视图技术,数据库访问技术,随后会介绍Spring Boot的高级特性,从8到11章,配置Spring Boot等高级特性,多环境部署,单元测试,以及深入IOC,AOP和事务。12章是对Spring Boot Plus项目的简要介绍。 另外一方面,当系统模块增加,性能和吞吐量要求增加,如何平滑的用Spring Boot来实现分布式架构,这在本书的13章-21章介绍。 ​ 阅读本书的人,可以是Java新手,从未使用过任何Java开发框架。也可以是Spring新手,还可以是用过Spring,但想进一步了解Spring Boot的开发者。如果你已经使用过Spring Boot,本书也非常适合你全面深入了解Spring Boot。 ​ 读者阅读完本书后,能轻松快速构建Web应用系统,也能握分布式系统架构实现。 ​ 上半部分,介绍Spring Boot基础技术 - 第一章,如果不知道Java开发框架历史,很难理解Spring Boot。本书第一章 介绍Java EE,然后指出其缺点,引入了流行的Spring,同时也说明Spring这么多年发展后的一些缺点,从而介绍Spring Boot,并以俩个简要例子作为说明。 - 第二章:对Spring Boot应用的开发环境做了说明,包括Java开发环境安装和配置,包含了Eclipse和Idea,以及Maven安装和配置,设置国内仓库镜像。 - 第三章: 详细介绍MVC技术,重点介绍URL映射到Contorller,以及映射到Controller 方法的参数,附件上传,参数类型转化,参数验证。 - 第四章:对视图层介绍,分为俩部分,一部分是Jackson,性能最好,功能最全的Json序列化工具,Spring Boot不仅仅将Jackson作为MVC中的JSON默认和推荐工具,也是Spring Boot分布式技术中常采用的JSON序列化技术。第二部分 介绍了笔者的开源技术Beetl后端模板引擎,作为国内最为流行的模板引擎之一,也是当今世界性能最好,功能最全的文本处理引擎。广泛应用到国内各大公司。 - 第五章: 介绍了以面向对象为中心的数据库访问工具Spring Data JPA。本章由易到难,先从Spring Data提供的功能入手介绍如何完成数据库简单的增删改查功能,然后引入JPA来解决应用中不可避免的复杂SQL查询。 - 第六章 介绍了以SQL为中心的数据库访问工具,主要包含俩款,一个是流行多年通过XML来管理SQL的Mybatis,以及辅助工具MyBatis-Plus。另外一个是笔者的Dao工具,SQL在markdown文件中管理,内置增删改查,无需辅助插件。以SQL为中心的数据库访问工具, 适合那些更喜欢SQL方式访问数据库的开发者。 - 第七章:介绍了MyBatis-Plus系统集成,本章节内容由MyBatis-Plus作者提供。 - 第八章:介绍Spring Boot高级特性,如常用Spring Boot的配置,日志配置,应用配置的读取,Spring Boot自动装配技术,Spring Boot Stater实现。 - 第九章: 介绍了如何部署Spring Boot应用,包括可执行jar,以及通过war部署到应用服务器上。应用经常面对多个环境,如开发,测试,还有准线上,线上,以及多个Demo环境,Spring Boot提供Profile来实现多环境部署 - 第十章:介绍了单元测试概念,以及SpringBoot下的单元测试支持,包括MVC单元测试,Mock测试。 - 第十一章:考虑到Spring Boot 以Spring技术为从基础,本章会再次深入介绍IOC,AOP和事务处理 - 第十二章:介绍[Spring Boot2 Plus](https://gitee.com/xiandafu/springboot-plus)项目安装和核心模型,代码生成功能。 分布式篇介绍 介绍Spring Boot与分布式相关技术 - 第十三章: 分布式和微服务概念。Spring Boot并不是一个微服务架构,但是一个微服务体系中中做的最好的单体系统,本书介绍分布式和微服务概念,挑战和缺陷。 - 第十四章: 介绍RESTFul风格的架构,然后介绍SpringBoot如何集成以提供REST服务,使用RestTemplate调用REST服务。本章最后也重点介绍了Swagger3.0技术,以方便REST的接口的交流,开发和测试。 - 第十五章:介绍了Redis服务器的安装和使用,Redis常用数据结构和操作命令。然后介绍Spring Boot如何集成Redis,介绍使用RedisTemplate来操作Redis。章节后半部分深入介绍了RedisTemplate提供的序列化机。相对于第一版,本版会深入介绍Reids在互联网中的适用 - 第十六章,介绍了ElasticSearch的安装和使用,ElasticSearch是一个即具有全文搜索功能,也具备NOSQL的功能。本章介绍通过REST和Spring Data 俩中方式访问Elastc Search. 相对第一版,本章会深入介绍Elastic 在互联网中的应用。 - 第十七章: 介绍SpringBoot Cache功能,并重点介绍了Redis作为分布式缓存的实现。在此基础上,改进了Redis分布式缓存,通过较少的代码实现了一个具备一二级缓存的技术。 - 第十八章:Spring Boot应用水平扩展,须实现无会话状态技术,Spring Session提供了分布式会话管理,本章介绍了Nginx作为反向代理,以及Spring Session的Reids实现及其源码分析 - 第十九章: 基于前一章Spring Boot应用水平扩展技术必然带来分布式协调 要求,Zookeeper是一个广泛使用的分布式协调器。本章介绍Zookeeper的安装和使用,对领导选取,分布式锁和配置三个常用功能做了重点描述,并在SpringBoot 应用中采用curator来完成这三个功能。 - 第二十章:Spring Boot提供了内置监控功能,使得用户通过HTTP请求就能知晓服务器健康状态,如数据源是否可用,NOSQL服务是否可用,最近的HTTP访问的内容等监控信息。本章讲述了线程栈,内存,在线日志,HTTP访问,Request Mapping等常用监控功能。其中讲述通过dump线程栈和内存来解决SpringBoot应用中的一些性能故障。 - 第二十一章: 再次介绍了SpringBoot-Plus,主要包含使用到的Spring Cache和Spring Session。 > Spring Boot除了是技术框架外,本身也是一个集成框架, 集成了很多流行的技术,这些技术必须作为本书的重点部分讲解,否则,无法基于Spring Boot来开发应用,本书在对Spring Boot集成技术进行选择性讲解,主要参考了SpringBoot 的推荐技术(注:不是默认集成技术),比如SpringBoot 官网明确推荐Jackson和HikariCP 。同时主要参考了国内复杂企业和高并发互联网电商需求来选型,比如Dao工具就不会介绍JOOQ,而重点方放到Spring Data和以及适应跟复杂需求的以SQL为中心的MyBatis和BeetlSQL 致谢: 首先感谢我的妻子苗珺,对我写书的的大力支持,没有她的支持,是不可能完成一本书的写作。 还要感谢我的朋友们,我的读者小伙伴们,给予我一次又一次信任,我必不辜负你们的信任 还要感谢那些一直怀着异样目光看着我的京东前同事,仿佛写书是一件不务正业的事情。写书即为社会做了贡献,也肯定会为公司做了贡献,也是完美了自己的人生经历。 由于Spring和Spring Boot 技术体系博大精深,尽管这已经是第二版,然而而我技术有限,写作过程中精力也有限,难免有纰漏,敬请读者指正.电子书可以随时根据读者反馈完善内容 也期盼读者能购买正版电子书,以鼓励作者持续跟踪Spring Boot技术,不断向读者呈现最好的Spring Boot书籍以及实战经验。 本书的官网论坛是 ibeetl.com