Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用。Spring Boot框架降低了Spring技术体系的使用门槛,简化了Spring应用的搭建和开发过程,提供了流行的第三方开源技术的自动集成。本书系统介绍了Spring Boot 2的主要技术,侧重于两个方面,一方面是极速开发一个Web应用系统,详细介绍Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性;另一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot实现分布式架构,也会在本书后半部分介绍,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技术,使用Spring Session实现系统水平扩展,使用Spring Cache提高系统性能。
1.内容丰富,涵盖Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技术,使用Spring Session实现系统水平扩展,使用Spring Cache提高系统性能。
2.面对系统模块增加,性能和吞吐量要求增加等场景时,介绍如何平滑地用Spring Boot实现分布式架构
李家智,出生在贵州,毕业于成都西南民族大学。现在就职于东方金科公司,担任架构师,负责公司技术产品研发。从事软件开发近20年,致力于Java和Java EE系统的架构和实现,对一切技术充满好奇,以知行合一要求自己。除了本书,也是国内流行开源Beetl模板语言和Dao工具BeetlSQL的作者。
第1章 Java EE简介
1.1 Java EE
1.1.1 Java EE架构
1.1.2 Java EE的缺点
1.2 Spring
1.2.1 Spring IoC容器和AOP
1.2.2 Spring的缺点
1.3 Spring Boot
1.4 Hello,Spring Boot
1.4.1 创建一个Maven工程
1.4.2 增加Web支持
1.4.3 Hello Spring Boot示例
1.4.4 使用热部署
1.4.5 添加REST支持
第2章 Spring Boot基
2.1 检查Java环境与安装Java
2.2 安装和配置Maven
2.2.1 Maven介绍
2.2.2 安装Maven
2.2.3 设置Maven
2.2.4 使用IDE设置Maven
2.2.5 Maven的常用命令
2.3 Spring核心技术
2.3.1 Spring的历史
2.3.2 Spring容器介绍
2.3.3 Spring AOP介绍
第3章 MVC框架
3.1 集成MVC框架
3.1.1 引入依赖
3.1.2 Web应用目录结构
3.1.3 Java包名结构
3.2 使用Controller
3.3 URL映射到方法
3.3.1 @RequestMapping
3.3.2 URL路径匹配
3.3.3 HTTP method匹配
3.3.4 consumes和produces
3.3.5 params和header匹配
3.4 方法参数
3.4.1 PathVariable
3.4.2 Model&ModelAndView
3.4.3 JavaBean接受HTTP参数
3.4.4 @RequsetBody接受JSON
3.4.5 MultipartFile
3.4.6 @ModelAttribute
3.4.7 @InitBinder
3.5 验证框架
3.5.1 JSR-303
3.5.2 MVC中使用@Validated
3.5.3 自定义校验
3.6 WebMvcConfigurer
3.6.1 拦截器
3.6.2 跨域访问
3.6.3 格式化
3.6.4 注册Controller
3.7 视图技术
3.7.1 使用Freemarker
3.7.2 使用Beetl
3.7.3 使用Jackson
3.7.4 Redirect和Forward
3.8 通用错误处理
3.9 @Service和@Transactional
3.9.1 声明一个Service类
3.9.2 事务管理
3.10 curl命令
第4章 视图技术
4.1 Beetl模板引擎
4.1.1 安装Beetl
4.1.2 设置定界符号和占位符
4.1.3 配置Beetl
4.1.4 groupTemplate
4.2 使用变量
4.2.1 全局变量
4.2.2 局部变量
4.2.3 共享变量
4.2.4 模板变量
4.3 表达式
4.3.1 计算表达式
4.3.2 逻辑表达式
4.4 控制语句
4.4.1 循环语句
4.4.2 条件语句
4.4.3 try catch
4.5 函数调用
4.6 格式化函数
4.7 直接调用Java
4.8 标签函数
4.9 HTML标签
4.10 安全输出
4.11 高级功能
4.11.1 配置Beetl
4.11.2 自定义函数
4.11.3 自定义格式化函数
4.11.4 自定义标签函数
4.11.5 自定义HTML标签
4.11.6 布
4.11.7 AJAX局部渲染
4.12 脚本引擎
4.13 JSON技术
4.13.1 在Spring Boot中使用Jackson
4.13.2 自定义ObjectMapper
4.13.3 Jackson的三种使用方式
4.13.4 Jackson树遍历
4.13.5 对象绑定
4.13.6 流式操作
4.13.7 Jackson注解
4.13.8 集合的反序列化
4.14 MVC分离开发
4.14.1 集成WebSimulate
4.14.2 模拟JSON响应
4.14.3 模拟模板渲染
第5章 数据库访问
5.1 配置数据源
5.2 Spring JDBC Template
5.2.1 查询
5.2.2 修改
5.2.3 JdbcTemplate增强
5.3 BeetlSQL介绍
5.3.1 BeetlSQL功能概览
5.3.2 添加Maven依赖
5.3.3 配置BeetlSQL
5.3.4 SQLManager
5.3.5 使用SQL文件
5.3.6 Mapper
5.3.7 使用实体
5.4 SQLManager内置CRUD
5.4.1 内置的插入API
5.4.2 内置的更新(删除)API
5.4.3 内置的查询API
5.4.4 代码生成方法
5.5 使用sqlId
5.5.1 md文件命名
5.5.2 md文件构成
5.5.3 调用sqlId
5.5.4 翻页查询
5.5.5 TailBean
5.5.6 ORM查询
5.5.7 其他API
5.5.8 Mapper详解
5.6 BeetlSQL的其他功能
5.6.1 常用函数和标签
5.6.2 主键设置
5.6.3 BeetlSQL注解
5.6.4 NameConversion
5.6.5 锁
第6章 Spring Data JPA
6.1 集成Spring Data JPA
6.1.1 集成数据源
6.1.2 配置JPA支持
6.1.3 创建Entity
6.1.4 简化Entity
6.2 Repository
6.2.1 CrudRepository
6.2.2 PagingAndSortingRepository
6.2.3 JpaRepository
6.2.4 持久化Entity
6.2.5 Sort
6.2.6 Pageable和Page
6.2.7 基于方法名字查询
6.2.8 @Query查询
6.2.9 使用JPA Query
6.2.10 Example查询
第7章 Spring Boot配置
7.1 配置Spring Boot
7.1.1 服务器配置
7.1.2 使用其他Web服务器
7.1.3 配置启动信息
7.1.4 配置浏览器显示ico
7.2 日志配置
7.3 读取应用配置
7.3.1 Environment
7.3.2 @Value
7.3.3 @ConfigurationProperties
7.4 Spring Boot自动装配
7.4.1 @Configuration和@Bean
7.4.2 Bean条件装配
7.4.3 Class条件装配
7.4.4 Environment装配
7.4.5 其他条件装配
7.4.6 联合多个条件
7.4.7 Condition接口
7.4.8 制作Starter
第8章 部署Spring Boot应用
8.1 以jar文件运行
8.2 以war方式部署
8.3 多环境部署
8.4 @Profile注解
第9章 Testing单元测试
9.1 JUnit介绍
9.1.1 JUnit的相关概念
9.1.2 JUnit测试
9.1.3 Assert
9.1.4 Suite
9.2 Spring Boot单元测试
9.2.1 测试范围依赖
9.2.2 Spring Boot测试脚手架
9.2.3 测试Service
9.2.4 测试MVC
9.2.5 完成MVC请求模拟
9.2.6 比较MVC的返回结果
9.2.7 JSON比较
9.3 Mockito
9.3.1 模拟对象
9.3.2 模拟方法参数
9.3.3 模拟方法返回值
9.4 面向数据库应用的单元测试
9.4.1 @Sql
9.4.2 XLSUnit
9.4.3 XLSUnit的基本用法
第10章 REST
10.1 REST简介
10.1.1 REST风格的架构
10.1.2 使用“api”作为上下文
10.1.3 增加一个版本标识
10.1.4 标识资源
10.1.5 确定HTTP Method
10.1.6 确定HTTP Status
10.1.7 REST VS. WebService
10.2 Spring Boot集成REST
10.2.1 集成REST
10.2.2 @RestController
10.2.3 REST Client
10.3 Swagger UI
10.3.1 集成Swagger
10.3.2 Swagger规范
10.3.3 接口描述
10.3.4 查询参数描述
10.3.5 URI中的参数
10.3.6 HTTP头参数
10.3.7 表单参数
10.3.8 文件上传参数
10.3.9 整个请求体作为参数
10.4 模拟REST服务
第11章 MongoDB
11.1 安装MongoDB
11.2 使用shell
11.2.1 指定数据库
11.2.2 插入文档
11.2.3 查询文档
11.2.4 更新操作
11.2.5 删除操作
11.3 Spring Boot集成MongoDB
11.4 增删改查
11.4.1 增加API
11.4.2 根据主键查询API
11.4.3 查询API
11.4.4 修改API
11.4.5 删除API
11.4.6 使用MongoDatabase
11.4.7 打印日志
第12章 Redis
12.1 安装Redis
12.2 使用redis-cli
12.2.1 安全设置
12.2.2 基本操作
12.2.3 keys
12.2.4 Redis List
12.2.5 Redis Hash
12.2.6 Set
12.2.7 Pub/Sub
12.3 Spring Boot集成Redis
12.4 使用StringRedisTemplate
12.4.1 opsFor
12.4.2 绑定Key的操作
12.4.3 RedisConnection
12.4.4 Pub/Sub
12.5 序列化策略
12.5.1 默认序列化策略
12.5.2 自定义序列化策略
第13章 Elasticsearch
13.1 Elasticsearch介绍
13.1.1 安装Elasticsearch
13.1.2 Elasticsearch的基本概念
13.2 使用REST访问Elasticsearch
13.2.1 添加文档
13.2.2 根据主键查询
13.2.3 根据主键更新
13.2.4 根据主键删除
13.2.5 搜索文档
13.2.6 联合多个索引搜索
13.3 使用RestTemplate访问ES
13.3.1 创建Book
13.3.2 使用RestTemplate获取搜索结果
13.4 Spring Data Elastic
13.4.1 安装Spring Data
13.4.2 编写Entity
13.4.3 编写Dao
13.4.4 编写Controller
第14章 Cache
14.1 关于Cache
14.1.1 Cache的组件和概念
14.1.2 Cache的单体应用
14.1.3 使用专有的Cache服务器
14.1.4 使用一二级缓存服务器
14.2 Spring Boot Cache
14.3 注释驱动缓存
14.3.1 @Cacheable
14.3.2 Key生成器
14.3.3 @CachePut
14.3.4 @CacheEvict
14.3.5 @Caching
14.3.6 @CacheConfig
14.4 使用Redis Cache
14.4.1 集成Redis缓存
14.4.2 禁止缓存
14.4.3 定制缓存
14.5 Redis缓存原理
14.6 实现Redis两级缓存
14.6.1 实现TwoLevelCacheManager
14.6.2 创建RedisAndLocalCache
14.6.3 缓存同步说明
14.6.4 将代码组合在一起
第15章 Spring Session
15.1 水平扩展实现
15.2 Nginx的安装和配置
15.2.1 安装Nginx
15.2.2 配置Nginx
15.3 Spring Session
15.3.1 Spring Session介绍
15.3.2 使用Redis
15.3.3 Nginx Redis
第16章 Spring Boot和ZooKeeper
16.1 ZooKeeper
16.1.1 ZooKeeper的数据结构
16.1.2 安装ZooKeeper
16.1.3 ZooKeeper的基本命令
16.1.4 领导选取演示
16.1.5 分布式锁演示
16.1.6 服务注册演示
16.2 Spring Boot集成ZooKeeper
16.2.1 集成Curator
16.2.2 Curator API
16.3 实现分布式锁
16.4 服务注册
16.4.1 通过ServiceDiscovery注册服务
16.4.2 获取服务
16.5 领导选取
第17章 监控Spring Boot应用
17.1 安装Acutator
17.2 HTTP跟踪
17.3 日志查看
17.4 线程栈信息
17.5 内存信息
17.6 查看URL映射
17.7 查
作者集其近二十年来沉浸于技术架构的理论探索和实践经验,特别是近年来扎根于互联网金融机构对于开源技术架构的前沿研究实践,方成此心血之作。全书由易及难、自浅入深,为读者徐徐展开基于Spring Boot 2.0构建企业复杂应用的恢弘篇章。此书非常适合作为开发人员及架构师从新手到高手、自低阶至高阶的重要指导书和参考书。
— 东方资产信息科技部 贺锦
如何快速适应业务的变化发展一直是每个企业IT部门都面临的困扰,现在Spring Boot开发框架提供了的、经过实践验证的技术解决方案。
本书作者,一位近二十年Java程序员和架构师,结合他高超的技术能力和丰富的实战经验,给读者精心阐述了 Spring Boot 2.0从初级快速构建系统到复杂的分布式系统开发的完整开发技术,本书不仅是开发人员不可多得的教科书,对非软件企业的IT人员也有极强的参考价值。
— 东方资产信息科技部 黄友平
过去几年,微服务架构在软件开发领域逐渐深入人心,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颠覆了传统的Java EE技术,迎来了Java企业级应用开发的春天,然而今天的Spring Boot却站在Spring巨人的肩膀上,让我们可以更高效地开发与交付。李家智是著名开源框架Beetl的作者,他写的《Spring Boot 2精髓:从构建小系统到架构分布式大系统》一定非常精彩。
— 特赞科技CTO 黄勇
早熟知作者是从Beetl模板引擎开始的,当时正在寻找一个易用高效的模板引擎,Beetl几乎满足了我所有的需要。同时也十分敬佩作者在开源项目上的认真与负责。本书可以说是作者多年的心血所著,从Spring Boot的前世今生到使用扩展,都做了非常而易懂的概括,细节上也秉承了作者的细致与认真,讲解清晰并语言干练,既适合初学者系统化学习,也适合有经验的工程师作为参考。
— 开源工具集Hutool作者 路小磊
从事Web开发有些年头了,经过技术选型,Spring Boot走入了我们的视野,开箱即用,非常方便,也是目前很多大公司的选择之一。除了研究源码,如果有一本关于Spring Boot的指导书籍,既可以方便地解决开发中的问题,又可以帮助读者掌握Spring Boot,提高生产效率。
家智兄的这本书正是这样不可多得的资源,本书是家智兄多年钻研的技术积累,书中详细讲解了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) 褚建琪