# Springboot2 实战权威指南 基础篇 ## 更新历史 ~~~ 24万+文字 200+章节 ~~~ * 2017.12, 本书第一版《Spring Boot 2精髓》,由电子出版社出版 * 2019.06, 本书第二版,拆成俩部分,基础篇和分布式篇,基础篇通过看云发布 * 2019.0702,微调目录结构 * 2019.0709 第二章scope文档和例子对不上 * 2019.0715 第三章目录缺少一节,标点符号调整 * 2019.0803 添加plus系统功能权限和数据权限开发原理 * 2019.0813 修改MyBatis一章内容,完善了MyBatis简单使用。SpringBoot-Plus增加数据权限和配置介绍 * 2020.0607 SpringBoot 2.3最新版,并细微修订部分内容,如SpringBoot为什么不采用SLF4J ## 写作特色 本书是《SpringBoot 2.0 精髓》(电子工业出版社出版,定价79元)的第二版。根据第一版的反馈,有如下改进 * 书中所有内容更新到最新版本,由于本书发型采用电子版,读者随时可以看到最新内容,可以通过更新历史查看是否有更新内容。Spring Boot的书很多,但大多昙花一现,本书决心打造为Spring Boot应用经典书籍 * **杜绝纯理论,杜绝贴源码行为**,[例子](https://gitee.com/xiandafu/springboot2-howto-example)紧密结合业务实战,兼顾教学和实战。 * **杜绝只讲Spring Boot,不讲Spring 生态的行为**,立刻学习,立刻使用 * 提供了较为全面的基础知识,本书可以作为一本参考书供开发中使用,有些知识限于篇幅没有深度讲解,但可以作为解决你的系统问题的一个思路 * 介绍了[SpringBoot-plus](https://gitee.com/xiandafu/springboot-plus) 开发平台,一个正真的开发平台内核系统,可以作为每个软件公司后台项目脚手架 * 增加了选型分析,Springboot 继承了很多框架,每章涉及到多个框架选型会做出一定个人分析,比如为什么SpringBoot 会推荐HikariCP,推荐Jackson。 * 更多介绍了微服务和分布式介绍 * 更多介绍Redis, 考虑到Redis 应用更加普遍,同时也介绍了JVM缓存caffeine,caffeine+redis,一对互联网高并发应用的黄金搭档 * 对一些Spring基础知识也较第一版本做了大幅度增强,满足高级开发者的使用需求。比如AOP,事务管理。本书改动幅度大约20%,随着用户反馈,会逐渐调整 * 由于出版的是电子版,所以有更多个人技术上的见解可以写在书里,能帮助更多初学者选型技术,以及知道如何选型技术 本书并不是一本Spring原理书或者SpringBoot 2的源码解析书,本书紧贴SpringBoot 2实战和定制开发,如果你是想立即使用SpringBoot2,只需本书一本就够了,而不像其他Spring Boot书要分好几本买,看数千页的资料才能编写Spring Boot 实战项目。《Springboot 2 实战权威指南》 是最好的选择 本书聚焦Spring Boot技术和相关生态,分布式技术。如果你想了解Spring Cloud,你需要一本专业还有更厚的书 本书适合那些Java初学者,或者从其他语言转向Java,也适合了解Spring,Struts等web框架,想改用Spring Boot的架构师,如果你已经对Spring Boot2 有所了解,本书也可以帮你拓宽知识面,了解Spring Boot2的原理和其依赖库的选型依据 ## 免费阅读 第一章提供免费阅读 最后一章12.1,12.2,12.3,12.4.1 章节提供免费阅读 ## 示例工程 本书的所有例子都直接访问[码云](https://gitee.com/xiandafu/springboot2-howto-example)或者ibeetl.com网站获取书中代码,网站还提供了关于Spring Boot 更深入的例子,并且包括俩个实用的例子,一个是采用Spring Boot 构建的轻量级[BBS](https://gitee.com/xiandafu/beetl-bbs),还有一个企业应用脚手架的完整例子[Spring Boot Plus](https://gitee.com/xiandafu/springboot-plus) ,这俩个例子被国内很多中小企业再次定制使用。本书会介绍Spring Boot Plus项目 欢迎与作者互动,完善本书和示例 ## 作者介绍 李家智,网名闲大赋,是国内Beetl,BeetlSQL等基础软件开源作者,工作了19年Java编程,至今还在一线开发。经常发表博客,技术见解。 现定居北京,曾在一流的电信厂商,外企干过,也在一流的互联网电商干过,熟悉JavaEE,熟悉Spring,熟悉分布式,最后一家是京东交易中台架构组,负责分布式系统架构升级和优化 有任何SpringBoot和周边生态技术的问题,欢迎加入QQ群252010126 讨论. 欢迎关注我的公众号 ![gzh](https://img.kancloud.cn/11/07/1107c49aa99164fadeac77e41e5c60f1_258x258.jpg) ## 基础篇内容介绍 上半部分,介绍Spring Boot基础技术 ,https://www.kancloud.cn/xiandafu/springboot2-in-practice * 第一章,如果不知道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使用,因为那需要一本书才能说明白,本节内容由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与分布式相关技术 https://www.kancloud.cn/xiandafu/springboot2inpractice_distributed * 第十三章: 分布式和微服务概念。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在经历了快速演变之后,正在成为Java微服务开发的主流成熟框架。本书对Spring Boot的特性进行全方位讲解,辅以大量详实的案例,对分布式系统开发和应用提供实战指导。书中还详细介绍了作者倾注了大量心血研发的开源软件Beetl和BeetlSQL,它们易于与Spring Boot集成,并已被众多大公司采纳使用。本书对于开发人员和架构师来说,都极具参考价值。 —《Kubernetes权威指南》作者/HPE高级顾问 龚正 和家智相识多年,他是我所认识的非职业足球运动员中球商最高的,多年来他一直深耕于技术的第一线,有很丰富的技术储备,是我非常钦佩的老大哥。 我们曾经在同一家公司的同一个项目集效力,都非常喜欢踢球,都出了书,不得不说很神奇(作者注:其实和龚正也在同一个公司,同一个项目效力)。 这本书的内容非常丰富,也都是作者多年潜心钻研的积累,这本书和我的书有一些联系,将Spring Boot进行了展开的讲解,既有广度也有深度,非常值得技术人员去学习。 —《微服务那些事儿》作者纪晓峰 Spring Boot上手简单、功能丰富、易于扩展,可谓目前业界快速开发、快速生产的利器;然而,它的版本演进非常迅速,中文文档质量也是参差不齐。本书由浅入深地讲解了Spring Boot,帮助读者系统理解Spring Boot。不仅如此,本书对2.0版本带来的新特性亦有非常详尽的描述,绝对值得一读。 —《Spring Cloud与Docker微服务架构实战》作者 周立 和家智相识有五年了,最早是因为模板引擎技术结识。家智是国内顶级的模板引擎专家,也是我认识的为数不多的 Spring 技术专家,他在这两方面都曾带给我不同角度的思考与印证,让我获益匪浅。本书是家智二十年技术专研的一次厚积薄发,其中非但从作者自身的经验详细讲述了 Spring Boot框架,还引入了作者在模板引擎,ORM 以及单元测试方面上多年研发的开源作品,是 Java 程序员和架构师不可多得的参考资料 — ACTFramework 作者 罗格林 十多年前,Spring 颠覆了传统的 JavaEE 技术,迎来了 Java 企业级应用开发的春天,然而今天的 Spring Boot 却站在 Spring 巨人的肩膀上,让我们可以更高效地开发与交付。李家智是著名开源框架 Beetl 的作者,他写的《Spring Boot 2.0 精髓》一定非常精彩。 — 黄勇,特赞科技 CTO 最早熟知作者是从Beetl模板引擎开始的,当时正在寻找一个易用高效的模板引擎,Beetl几乎满足了我所有的需要。同时也对作者在开源项目上的认真与负责所敬佩。本书可以说是作者多年的心血所著,从Spring boot的前世今生到使用扩展,都做了非常全面而易懂的概括,细节上也秉承了作者的细致与认真,讲解清晰并语言干练,既适合初学者系统化学习,也适合有经验的工程师做为参考。 — 开源工具集Hutool作者 路小磊 从事web开发有些年头了,经过技术选型,spring boot走入了我们的视野,开箱即用,非常方便,也是目前很多大公司的选择之一。除了研究源码,如果有一本关于SpringBoot的指导书籍,则可以极大方便的解决开发中的问题和帮助掌握SpringBoot,提高生产效率。 家智兄的这本书正是这样不可多得的优秀资源,是家智兄多年钻研研究的技术积累,书中详细讲解了web开发的各个知识点,包含:web请求处理,ORM处理,redis缓存,MongoDB,ElasticSearch,Zookeeper,监控等方面的知识点。相信读者通过仔细阅读并掌握本书的知识点,可以极大的提高自身的web开发水平,为读者的软件开发事业助一臂之力! — 上海秦苍(买单侠) 基础架构组架构师 刘志强 作者在Java EE体系内的多年实战经验使得本书的内容极具价值,书中清晰细致的讲解了快速构建Web应用系统的各个知识点,尤其是在后端模板引擎和ORM两个章节中作者以自己的两款成熟开源产品Beetl和BeetlSQL为切入点进行讲解,剖析角度十分新颖并且有启发性。 通过这本书可以学习到关于Spring Boot框架的核心技术,从而掌握快速构建分布式Web应用的必备知识。无论你是Spring Boot新手,还是已经使用过Spring Boot的开发者,相信都可以从这本书中受益。 — XXL-JOB系列作者 许雪里 近两年来,伴随着微服务兴起,Spring boot突然流行起来了,越来越多的公司采用这一技术,已经成为大多数Java微服务开发首选开源框架。Spring boot有非常显著的特点配置简单,易于开发,可快速部署,本书结合丰富的实例,从Spring boot的快速开发WEB应用入手,逐渐深入的到Spring boot的高级特性,最后在重点介绍分布式架构的应用,通过深入浅出的阐述,让你从单体应用到分布式,微服务都有全方位的了解,是不可多得的一本好书,当然我认为最重要的还是作者耗费心血开源项目Beetl和BeetlSQL。 —《分布式数据库架构及企业实践——基于Mycat中间件》作者,开源中间件Mycat负责人 周继锋 Spring风靡多年,Spring Boot在最近几年微服务框架浪潮下更是出尽风头,本书作者由浅入深地把Spring Boot 2.0各种特性阐述得淋漓尽致,不管你是Spring Boot新手还是老司机都值得一读。Java Web后端也好,App后台也罢,甚至独立后台应用,等等,Spring Boot都是你不可或缺的高效率工具。 移动易项目团队深深的体会就是使用了Spring Boot可以节省50%以上的代码。 — 上海亿琪软件有限公司CEO,移动易开源项目负责人,华为开发者社区专家(HDE),褚建琪