Spring Boot 2精髓:从构建小系统到架构分布式大系统

Spring Boot 2精髓:从构建小系统到架构分布式大系统 pdf epub mobi txt 电子书 下载 2025

李家智 著
图书标签:
  • Spring Boot
  • 微服务
  • 分布式系统
  • Java
  • 后端开发
  • 企业级应用
  • RESTful API
  • 实战
  • 架构
  • 开发技巧
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121328251
版次:1
商品编码:12214143
品牌:Broadview
包装:平装
开本:16开
出版时间:2017-10-01
用纸:胶版纸
页数:384
正文语种:中文

具体描述

产品特色

编辑推荐

  

1.内容丰富,涵盖Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB、ZooKeeper、Elasticsearch等流行技术,使用Spring Session实现系统水平扩展,使用Spring Cache提高系统性能。

2.面对系统模块增加,性能和吞吐量要求增加等场景时,介绍如何平滑地用Spring Boot实现分布式架构。


  

内容简介

  

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提高系统性能。

作者简介

李家智,出生在贵州,毕业于成都西南民族大学。现在就职于东方金科公司,担任架构师,负责公司技术产品研发。从事软件开发近20年,致力于Java和Java EE系统的架构和实现,对一切技术充满好奇,以知行合一要求自己。除了本书,也是国内流行开源Beetl模板语言和Dao工具BeetlSQL的作者。

精彩书评

  

作者集其近二十年来沉浸于技术架构的理论探索和实践经验,特别是近年来扎根于互联网金融机构对于开源技术架构的前沿研究实践,方成此心血之作。全书由易及难、自浅入深,为读者徐徐展开基于Spring Boot 2.0构建企业复杂应用的恢弘篇章。此书非常适合作为开发人员及架构师从新手到高手、自低阶至高阶的重要指导书和参考书。

— 东方资产信息科技部 贺锦


  

如何快速适应业务的变化发展一直是每个企业IT部门都面临的困扰,现在Spring Boot开发框架提供了新的、经过实践验证的技术解决方案。

本书作者,一位近二十年Java程序员和架构师,结合他高超的技术能力和丰富的实战经验,给读者精心阐述了 Spring Boot 2.0从初级快速构建系统到复杂的分布式系统开发的完整开发技术,本书不仅是开发人员不可多得的教科书,对非软件企业的IT人员也有很强的参考价值。

— 东方资产信息科技部 黄友平


  

和家智相识多年,他是我所认识的非职业足球运动员中球商非常高的,多年来他一直深耕于技术的第一线,有着丰富的技术储备,是我非常钦佩的老大哥。
  

我们曾经在同一家公司的同一个项目集效力,都非常喜欢踢球,都出了书,不得不说很神奇。

这本书的内容非常丰富,也是作者多年潜心钻研的积累,这本书和我的书有一些联系,将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) 褚建琪


  


  

目录

第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容器管理的Bean
17.8 其他监控
17.9 编写自己的监控信息
17.9.1 编写HealthIndicator
17.9.2 自定义监控













前言/序言

前言



Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。

一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论是新手还是老手都能快速上手,快速掌握页面渲染、数据库访问等常用技术。也要求开发框架能尽量多地集成第三方工具,以便信手拈来。最后,还希望在开发调试过程中,方便代码更改后能快速重启。

另外一方面,当系统模块增加,用户使用量增加时,面对这样的挑战,系统拆分成为新的架构,程序员和架构师当然不希望换掉已有的开发框架,希望能由小而美的系统过渡到大而强的分布式系统。

环顾当前Java开源世界中的流行技术框架,能同时胜任这项工作的微乎其微,Play和ActFramework 都是不错的选择,国内的Nutz和JFinal的口碑也不错。但能同时满足快速开发和分布式系统架构的框架,还是群众基础最好、功能最全、基于Spring技术的Spring Boot框架。

内容介绍

本书系统介绍了Spring Boot 2.0的主要技术,侧重于两个方面,一方面是极速开发一个Web应用系统(第1~6章,包含Spring介绍、MVC、视图技术、数据库访问技术),随后介绍了Spring Boot的高级特性(第7~9章),包括多环境部署、自动装配、单元测试等技术。另外一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot来实现分布式架构,会在本书的第10~17章介绍。

阅读本书的读者,可以是Java新手,从未使用过任何Spring技术。也可以是用过Spring,但想进一步了解Spring Boot的开发者。如果你已经使用过Spring Boot,那么本书也非常适合你全面深入了解Spring Boot。

希望读者阅读完本书后,既能轻松快速构建Web应用系统,也能掌握分布式系统架构的实现。

上半部分介绍Spring Boot的基础技术。

第1章:介绍Java EE,然后指出其缺点,引入了流行的Spring,同时也说明Spring经过这么多年发展后暴露的一些缺点,从而引出Spring Boot,并以两个简要例子作为说明。

第2章:对Spring Boot应用的开发环境做了说明,包括Java开发环境的安装和配置,Maven的安装和配置,设置国内仓库镜像,还有常用的Maven命令。本章最后介绍Spring历史以及现有开发团队,并介绍Spring框架的AOP和IoC两个核心技术

第3章:介绍MVC技术,前半部分重点介绍URL映射到Controller,以及映射到Controller 方法的参数、参数类型转化、参数验证。后半部分简单介绍MVC中的视图技术Freemaker、Beetl,以及Jackson序列化技术。Beetl和Jackson将在第4章详细介绍。

第4章:介绍笔者的开源技术Beetl后端模板引擎,作为国内流行的模板引擎之一,具有简单易学、功能/性能强大、支持MVC分离开发等特点。另外一部分详细介绍Jackson的JSON序列化技术。Jackson不仅作为Spring MVC中的JSON默认工具,也是Spring Boot分布式技术中常采用的JSON序列化技术。

第5章:介绍以SQL为中心的数据库访问工具BeetlSQL,这是笔者的另外一款流行Dao工具,SQL在markdown文件中管理,内置增删改查、轻量级ORM功能、代码生成、主从支持、跨多种数据库等特点,适合那些更喜欢以SQL方式访问数据库的开发者。

第6章:介绍以面向对象为中心的数据库访问工具Spring Data JPA。本章由易到难,先从Spring Data提供的功能入手,介绍如何完成数据库简单的增删改查功能,然后引入JPA来解决应用中不可避免的复杂SQL查询。

第7章:介绍Spring Boot高级特性,如常用的Spring Boot的配置、日志配置、应用配置的读取、Spring Boot自动装配技术和Spring Boot Starter实现。

第8章:介绍如何部署Spring Boot应用,包括可执行jar,以及通过war部署到应用服务器上。应用经常面对多个环境,如开发、测试,还有准线上、线上,以及多个Demo环境,Spring Boot提供Profile来实现多环境部署。

第9章:介绍单元测试概念,以及Spring Boot下的单元测试支持,包括MVC单元测试、Mock测试,以及面向数据库应用的测试方案。


下半部分介绍与Spring Boot相关的分布式技术。

第10章:介绍RESTful风格的架构,然后介绍Spring Boot如何集成以提供REST服务,使用RestTemplate调用REST服务。本章最后也重点介绍了Swagger 3.0技术,以方便REST的接口的交流、开发和测试。

第11章:介绍MongoDB的安装和使用,然后介绍Spring Boot如何集成MongoDB,同时还介绍了如何用MongoTemplate访问MongoDB。

第12章:介绍Redis服务器的安装和使用,Redis常用的数据结构和操作命令。然后介绍Spring Boot如何集成Redis,如何使用RedisTemplate来操作Redis。本章后半部分深入介绍了RedisTemplate提供的序列化机制。

第13章:介绍Elasticsearch的安装和使用,Elasticsearch既具有全文搜索功能,也能像MongoDB那样,具备NoSQL的功能。本章介绍通过REST和Spring Data两种方式访问Elasticsearch。

第14章:介绍Spring Boot Cache,并重点介绍Redis作为分布式缓存的实现。在此基础上,改进了Redis分布式缓存,通过较少的代码实现了一个具备一二级缓存的技术方案。

第15章:Spring Boot应用水平扩展,需实现无会话状态技术,Spring Session提供了分布式会话管理,本章介绍了Nginx作为反向代理的内容,以及Spring Session的Redis实现及其源码分析。

第16章:基于第15章Spring Boot应用水平扩展技术必然带来分布式协调要求,ZooKeeper是一个广泛使用的分布式协调器。本章介绍ZooKeeper的安装和使用,对领导选取、分布式锁和服务注册三个常用功能做了重点描述,并在Spring Boot 应用中采用Curator来完成这三个功能。

第17章:Spring Boot提供了内置监控功能,使得用户通过HTTP请求就能知晓服务器的健康状态,如数据源是否可用、NoSQL服务是否可用、最近的HTTP访问的内容等监控信息。本章讲述了线程栈、内存、在线日志、HTTP访问、RequestMapping等常用监控功能。其中还讲述通过dump线程栈和内存来解决Spring Boot应用中的一些性能故障。

如何阅读本书

笔者作为一个从事Java开发17年的程序员,这里给新手一些诚恳的建议,用于帮助新手掌握Spring Boot 2.0。

建议按照本书每章的例子先模仿一遍,不要急于按照自己的项目要求去改,否则很容易知识掌握不牢固、不全面。如果遇到自己暂时无法理解的知识,也建议优先记住这些知识点。

理解完书中的知识,能运行书中提供的例子(推荐手写,或者从官网下载例子)后,可以尝试主动制造一些错误。看看Spring Boot会给你什么样的错误提示,以1.4.5节例子为例,如果去掉@RequestMapping注解,或者如果写成value="/usercredit/{id123}" 会怎么样,甚至将getCreditLevel改成getCreditLevelTest会有什么后果(这个改动没有任何影响)。通过主动制造错误,观察Spring Boot应用的错误信息来深入学习Spring Boot。实际上,不仅仅是学习Spring Boot,这也是学习其他框架,甚至是编程语言或者其他任何编程技术的一种窍门。

本书每章都会提及Spring Boot框架的一些接口或者关键类,不了解这些类的实现细节,你仍然可以运用Spring Boot,如果想深入掌握Spring Boot,建议阅读这些类的源代码以了解这些类的职责以及如何实现职责。可以通过IDE的快捷键打开这些类,以Eclipse 为例,用快捷键Ctrl+T打开这些类去阅读Spring源码,还可以在这些类的方法中打上断点,在运行本书例子的时候,查看在断点处发生了什么来帮助你理解Spring Boot。比如在第14章中使用Redis实现分布式缓存的时候,提到了RedisCacheManager,你可以阅读这个类的源码,并在关键的getCache方法上打上断点,观察如何实现Redis缓存。

如果对于这些类还是无法理解,则可以通过搜索引擎搜索这些类,总有些博客和技术文章在讨论这些类的职责和实现方式。

谨慎对待互联网搜索结果,这是因为Spring Boot 2.0技术本身较为新,发展也较快,通过互联网搜索结果需要关注一下文章的发布日期、文章适用的版本,如果你在使用Spring Boot 2.0中遇到任何问题,也欢迎到社区进行交流,社区地址是ibeetl.com。

最后,请购买正版书籍,鼓励作者和出版社出版更好的技术书籍。

致谢

首先感谢我的妻子苗珺对我写书的大力支持,没有她的支持,我是不可能完成一本书的写作的。还有我的儿子,知道我正在做一件很重要的事情的时候就不再让我陪他聊天。

还要感谢电子工业出版社的编辑同志,给予我绝对的信任和支持,并对本书的出版做了非常多的指导,感谢你们付出的辛勤汗水。

最后要感谢的是公司和集团领导对我写书的大力支持,特别是在我需要帮助的时候委派左丽娜同事完成部分章节的编写,没有公司领导的支持,对于中国程序员来说,写一本书几乎是不可能完成的任务。

本书是我写的第一本书,由于Spring和Spring Boot技术体系博大精深,而我技术有限,写作过程中精力也有限,难免有纰漏,敬请读者指正。


东方邦信金融科技有限公司 李家智(闲大赋)



探索软件架构的边界:构建高性能、可扩展的现代应用 在这个技术日新月异的时代,如何高效、稳定地构建兼具性能与可扩展性的软件系统,是每一个开发者和架构师都必须面对的挑战。本书并非聚焦于某一特定框架的精髓,而是着眼于更宏观、更根本的软件设计原则与实践,旨在为读者提供一套构建复杂、健壮且易于维护的现代应用程序的理论框架与实践指导。我们将一起深入探索,如何从零开始,一步步构建出能够应对海量数据、高并发访问,并能够随着业务增长而平滑扩展的分布式系统。 第一部分:夯实基础,构建可维护的单体应用 在踏入分布式系统的浩瀚海洋之前,牢固的基础是必不可少的。本部分将帮助读者重新审视单体应用的开发模式,并非为了抵制分布式,而是为了更好地理解其优势与局限,并从中提炼出可复用的设计思想。 模块化与高内聚低耦合: 我们将探讨如何通过精巧的模块划分,实现代码的高内聚和组件间的低耦合。这不仅关乎代码的可读性与可维护性,更是为未来向微服务或其他分布式架构迁移打下坚实基础。本书将深入剖析各种模块化策略,从领域驱动设计(DDD)的聚合根和限界上下文,到分层架构的职责划分,再到清晰的接口定义,帮助读者构建易于理解和修改的代码结构。我们将通过具体的案例,演示如何避免常见的“意大利面条式代码”陷阱,让代码逻辑清晰,易于测试和重用。 设计模式的现代应用: 设计模式是前人智慧的结晶,并非僵化的规则,而是在特定场景下解决问题的通用方案。本书将不仅仅罗列经典的设计模式,更会结合现代软件开发的实践,展示如何在实际项目中灵活运用工厂模式、单例模式、策略模式、观察者模式等,以提高代码的复用性、灵活性和可维护性。我们会深入分析每种模式的适用场景、优缺点,以及在实际开发中可能遇到的坑,引导读者写出更具“工程美”的代码。 数据建模与持久化策略: 数据是应用程序的灵魂。本部分将聚焦于如何进行高效、准确的数据建模,并探讨不同的数据持久化策略。我们将从关系型数据库的范式设计、索引优化,到非关系型数据库(如文档型、键值型、图数据库)的选择与应用场景,提供全面的指导。特别地,我们会讨论如何设计易于扩展的数据层,以应对未来可能的数据量增长和查询复杂度的提升。 API设计与服务契约: 无论单体还是分布式,良好的API设计都是系统间交互的关键。我们将详细阐述RESTful API的设计原则,包括资源定义、HTTP方法的使用、状态码的规范等。更重要的是,我们会强调服务契约的重要性,如何通过清晰的接口文档(如OpenAPI/Swagger)来定义服务之间的交互规范,减少沟通成本,保证系统的稳定性和可维护性。 测试策略与自动化: 质量是软件的生命线。本书将详细阐述各种测试策略,包括单元测试、集成测试、端到端测试,以及性能测试和安全测试。我们将重点讲解如何构建高效的自动化测试体系,利用各种测试框架和工具,将测试融入开发流程,从而快速发现和修复缺陷,提升开发效率和产品质量。 第二部分:迈向分布式,构建高可用与可扩展的系统 当单体应用面临瓶颈,或业务需求变得更加复杂多样时,分布式系统便成为必然的选择。本部分将带领读者深入分布式系统的核心,掌握构建高可用、可扩展、高性能分布式架构的关键技术与方法。 服务化与微服务架构: 详细解析服务化和微服务架构的核心理念,包括服务的拆分策略(按业务领域、按功能)、服务间的通信机制(同步与异步,RESTful, gRPC, 消息队列)、服务注册与发现(Consul, Eureka, Nacos),以及API网关的设计与作用。我们将探讨如何权衡服务的粒度,避免过度拆分或拆分不足带来的问题,并提供在实际项目中落地微服务架构的路线图与注意事项。 容错与高可用设计: 分布式系统不可避免会遇到服务故障。本部分将深入讲解各种容错机制,如重试(Retry)、熔断(Circuit Breaker)、限流(Rate Limiting)、降级(Degradation)、幂等性设计等,以及如何利用这些机制构建具有高可用性的系统。我们将分析Netflix Hystrix、Sentinel等开源组件的原理与实践,引导读者设计出能够优雅处理故障的分布式服务。 数据一致性与分布式事务: 在分布式环境中,保证数据的一致性是巨大的挑战。我们将详细探讨CAP理论,并分析BASE理论在实际应用中的意义。针对分布式事务,我们将深入剖析两阶段提交(2PC)、三阶段提交(3PC)的原理、优缺点以及在实际应用中的局限性。同时,我们将重点介绍基于本地消息表、事务消息(如Kafka、RocketMQ的事务消息)或Saga模式等最终一致性方案,为读者提供更具实操性的解决方案。 负载均衡与弹性伸缩: 应对流量高峰和实现资源的有效利用,离不开负载均衡和弹性伸缩。我们将深入讲解各种负载均衡算法(如轮询、最少连接、IP哈希),并探讨负载均衡的实现方式,包括硬件负载均衡、软件负载均衡(如Nginx, HAProxy)和DNS负载均衡。同时,我们将讲解如何通过容器化技术(如Docker)和编排平台(如Kubernetes),实现应用的弹性伸缩,根据实际负载动态调整资源,保证服务的可用性和性能。 分布式缓存与消息队列: 分布式缓存(如Redis, Memcached)是提升系统性能、降低数据库压力的利器。本书将详细讲解分布式缓存的设计原则、缓存策略(如读写穿透、缓存击穿、缓存雪崩的解决方案)、一致性问题以及高可用部署。同时,我们将深入探讨消息队列(如Kafka, RabbitMQ, RocketMQ)在解耦、异步通信、削峰填谷等方面的作用,并讲解消息队列的设计模式,如发布/订阅、点对点,以及消息可靠性保障机制。 分布式追踪与日志聚合: 在复杂的分布式系统中,问题排查变得异常困难。本部分将重点介绍分布式追踪(如Jaeger, Zipkin)的核心概念和实现原理,帮助读者理解请求在各个服务间的流转过程,快速定位性能瓶颈和错误源。同时,我们将讲解日志聚合(如ELK Stack - Elasticsearch, Logstash, Kibana)的方案,实现日志的集中存储、搜索和分析,为问题排查提供有力支持。 第三部分:工程实践与持续演进 构建完备的分布式系统并非一蹴而就,持续的工程实践与演进是保证系统生命力的关键。 DevOps与CI/CD: 本部分将讲解DevOps的核心理念,以及如何构建自动化持续集成(CI)和持续交付/部署(CD)流水线。我们将介绍常用的CI/CD工具(如Jenkins, GitLab CI, GitHub Actions),并探讨如何通过自动化构建、测试、部署,加速软件交付,提高团队协作效率。 安全策略在分布式系统中的应用: 分布式系统带来了新的安全挑战。我们将探讨如何在服务间通信、API访问、数据存储等方面应用各种安全策略,如身份认证与授权(OAuth2, JWT),数据加密,网络隔离,以及安全审计等。 性能优化与监控: 持续的性能监控和优化是分布式系统不可或缺的一部分。我们将讲解如何建立全面的监控体系,包括应用性能监控(APM)、基础设施监控、业务指标监控,并介绍常用的监控工具(如Prometheus, Grafana)。我们将深入探讨常见的性能瓶颈分析方法,并提供针对性的优化建议。 架构演进与技术选型: 软件架构并非一成不变。本书将探讨如何进行有效的架构评估,并根据业务发展和技术趋势,规划架构的演进路径。我们将提供关于如何进行技术选型的框架,以及在权衡新旧技术、开源与闭源时的考量因素。 本书的目标是提供一套系统性的思维方式和实践方法,帮助读者理解和构建现代软件系统。它不是一本关于特定框架的“如何做”的教程,而是关于“为什么这么做”以及“如何灵活运用”的深度探讨。通过本书的学习,您将能够更自信地应对复杂的技术挑战,设计出更具鲁棒性、可扩展性和生命力的软件系统。

用户评价

评分

这本书的包装非常精美,封面设计也很有质感,让人在拿到手的时候就充满期待。打开来,里面的排版也很舒适,代码示例清晰,注释也相对详细,这一点对于快速学习者来说是加分项。书中对 Spring Boot 的核心组件,比如 Spring Boot Starter、Spring Boot Actuator、Spring Boot Profiles 等的介绍,还是比较到位。我尤其喜欢书中关于如何自定义 Spring Boot Starter 的章节,虽然这个主题可能对于大部分开发者来说并非必需,但能够帮助理解 Spring Boot 的扩展性,以及如何封装可重用的组件。另外,书中关于 Spring Boot 结合 Docker 进行部署的章节,也提供了一些基础的指导,虽然不算深入,但对于希望将 Spring Boot 应用容器化的开发者,也能提供一些启发。然而,在“架构分布式大系统”这个宏大的目标上,这本书就显得力不从心了。我本以为会看到关于如何利用 Spring Boot 构建复杂业务场景下的大型分布式系统的详细设计和实现方案,例如,如何对分布式服务进行有效的监控和告警,如何设计高可用的数据库读写分离方案,如何处理海量数据的缓存策略等。但书中关于这些方面的讨论,要么非常简略,要么仅仅是列举了一些概念,缺乏具体的代码实现和深度的技术分析,让人感觉有些“雷声大,雨点小”。

评分

这本书的结构安排上,前期对 Spring Boot 2 的基础概念和常用功能的讲解,还是比较细致和完整的。从项目创建、依赖管理,到 Web 开发、数据访问,再到安全性配置,这些基础内容都得到了比较充分的阐述,代码示例也相对清晰。我尤其欣赏书中对 Spring Boot 启动过程的剖析,以及各种配置项的详细解释,这有助于我更深入地理解 Spring Boot 的工作机制。书中也提及了一些 Spring Boot 的高级特性,比如自定义注解、AOP 集成等,这些内容对于提升开发效率和代码质量有一定的帮助。然而,当书本进入到“架构分布式大系统”的部分时,内容就明显显得不足了。我本以为会看到关于如何利用 Spring Boot 构建复杂的分布式系统架构的详细论述,例如如何进行服务拆分和治理,如何实现服务的高可用和容错,如何处理分布式一致性问题,以及如何进行性能优化等。但书中对这些方面的介绍,更多的是停留在概念层面,缺乏具体的案例分析和实践指导。我没有看到关于如何选择合适的分布式技术栈,如何设计微服务间的通信协议,如何构建强大的监控和日志系统等内容。这让我感觉这本书更像是一本 Spring Boot 2 的“技术手册”,而非一本能够指导读者构建复杂分布式系统的“架构指南”。

评分

拿到这本《Spring Boot 2精髓》之后,我首先被它宏大的主题所吸引,从“精髓”到“分布式大系统”,听起来非常全面。书中对 Spring Boot 2 的一些核心特性,比如声明式注解、条件化配置、内嵌服务器等,都进行了比较细致的介绍,让我对 Spring Boot 的工作原理有了更深的理解。例如,书中对 Spring Boot Starter 的讲解,以及如何通过引入不同的 Starter 来快速集成各种技术栈,给我留下了深刻的印象。此外,书中关于 Spring Boot 应用程序的测试策略,也提供了一些不错的建议,对于提高代码质量非常有帮助。然而,随着阅读的深入,我发现书中在“架构分布式大系统”这部分内容上,似乎没有达到其声称的深度。我本来期望看到的是如何使用 Spring Boot 构建健壮、可伸缩的分布式系统,比如如何设计微服务间的通信机制,如何处理服务降级和熔断,如何进行分布式配置管理,以及如何实现分布式链路追踪等。但书中对这些话题的讨论,要么非常浅显,要么仅仅是提及了相关概念,缺乏具体的实践指导和技术细节。很多时候,我感觉书中的内容更像是对 Spring Boot 基础功能的罗列,而将“分布式大系统”的架构设计留给了读者自行探索,这与我对一本人称“精髓”并涵盖“分布式大系统”的书籍的期望有所出入。

评分

我购买这本书的初衷,是希望能系统地学习如何从零开始构建一个完整的、可扩展的分布式系统,并希望 Spring Boot 2 能在其中扮演关键角色。书中确实花了不少篇幅来讲解 Spring Boot 的基础知识,比如依赖管理、配置文件、Web 开发、数据访问等,这些内容比较扎实,逻辑也比较清晰。我个人对书中关于 Spring Boot 自动配置机制的解读比较感兴趣,它帮助我理解了 Spring Boot 如何简化配置过程。同时,书中关于 Spring Boot Actuator 的讲解,也让我了解了如何监控和管理 Spring Boot 应用,这对于后期的运维非常有帮助。然而,当我翻到关于“架构分布式大系统”的部分时,我感到有些失望。书中所提及的分布式系统概念,例如服务拆分、API 网关、消息队列等,都只是蜻蜓点水,没有深入到具体的架构设计和技术选型。我期待的是能够看到具体的案例分析,比如如何将一个单体应用逐步拆分成微服务,如何选择合适的消息队列(如 Kafka、RabbitMQ)并进行集成,如何设计幂等性接口以及如何处理分布式事务的常见模式。但这些内容在书中几乎是缺失的,更多的是停留在理论层面,没有提供足够的实操指导。这本书更像是一个 Spring Boot 2 的“上手指南”,而对于“架构分布式大系统”这个目标,它所能提供的帮助非常有限。

评分

我最近读完了一本关于 Spring Boot 2 的书籍,虽然书名听起来很吸引人,从“精髓”到“分布式大系统”的跨越,但实际阅读体验却有些……出乎意料。这本书在介绍 Spring Boot 的基本概念和常用功能方面,确实做了一些铺垫,比如如何快速创建一个简单的 Web 应用,讲解了 Spring Boot 的自动配置原理,以及如何集成常用的依赖,如 JPA、Redis 等。这些内容对于初学者来说,或许能够提供一个入门的指引,了解 Spring Boot 的基本开发流程。然而,当我试图深入了解书中提到的“架构分布式大系统”时,却发现这部分内容显得非常单薄,甚至有些流于表面。书中对分布式系统的概念,比如微服务架构、服务注册与发现、负载均衡、分布式事务等,只是浅尝辄止地提了提,并没有深入讲解其背后的原理、实现方式以及在实际项目中可能遇到的挑战。我期望能看到更多关于如何使用 Spring Boot 构建可扩展、高可用、高性能的分布式系统的具体实践,比如如何选择合适的分布式框架(如 Dubbo、Spring Cloud),如何进行服务治理,如何处理分布式一致性问题等。但这些内容在书中几乎是空白的,感觉像是为了吸引眼球而加入的标签,与核心内容关联不大。整本书更像是一本“Spring Boot 2 入门指南”,而非“从构建小系统到架构分布式大系统”的全景式教程。

评分

非常好的商品,内容丰富,深入浅出,非常喜欢

评分

我找的时候买的,统一回复了,程序员还是要好看书

评分

罗列内容范围多而散,没有深度,讲皮毛,适合初学!

评分

这本书还可以,适合小白,就是有半本书都在介绍做着自己的框架,这个不是很喜欢

评分

该进步啦,从spring跳到springboot加油加油加油

评分

还不错,还不错,还不错,还不错,还不错,还不错,

评分

昨天下单,今早11点到的,3本书,正版,谢谢快递小哥

评分

好好熟悉熟悉了,看看看看。

评分

书还没得及看,纸张看着还不错

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有