《学透Spring:从入门到项目实战》丁雪丰【文字版_PDF电子书_下载】
内容简介:
【Spring官方布道师 & 国内大咖推荐,学透Spring就用兔子书!】
【Spring Boot等10+款常用组件一本通,专注解决Spring入门之后落地难的问题】
本书的目标是让大家又快又好地打包学透 Spring 技术栈,内容将涉及 Spring Framework、Spring Boot、 Spring Cloud 等 Spring 家族成员。
全书分为四部分:第一部分“Spring 入门”,先学习基本的 Spring IoC 、AOP,随后过渡到当下热门的 Spring Boot ;第二部分“Spring 中的数据操作”,其中既有常规的 SQL、NoSQL 数据操作,也有进阶的数据源配置和缓存抽象;第三部分“使用 Spring 开发 Web 应用”,讲述 Spring MVC 细节的同时,也不放过 Web 安全与 REST ;第四部分“使用 Spring 开发微服务”,除了常规的 Spring Cloud 模块,也会讲解 Spring Cloud Alibaba。
作者简介:
丁雪丰,美团研究员、技术图书作译者、极客时间《玩转Spring全家桶》课程讲师。获得了“上海市青年金才”“腾讯云最具价值专家”等称号。致力于推动优秀技术在国内的发展,是Spring Framework 2.0和Spring Framework 2.5官方文档翻译项目的 负责人,翻译及原创出版了《Spring Boot实战》《Spring攻略》《RESTful Web Services Cookbook中文版》等8部图书。曾就职于平安壹钱包、百度与支付宝,在互联网金融、支付等领域积累了丰富的大型系统构建经验。
目 录:
第一部分 Spring入门
第1章 初识 Spring
1.1 认识 Spring 家族
1.1.1 Spring 发展历史
1.1.2 Spring 家族主要成员
1.2 编写第一个 Spring 程序
1.2.1 基础环境准备
1.2.2 通过Spring Initializr创建工程
1.2.3 编写简单的REST服务
1.3 实战案例说明
1.3.1 需求描述
1.3.2 模块说明
1.4 小结
第2章 Spring Framework中的IoC容器
2.1 IoC容器基础知识
2.1.1 什么是IoC容器
2.1.2 容器的初始化
2.1.3 BeanFactory与ApplicationContext
2.1.4 容器的继承关系
2.2 Bean基础知识
2.2.1 什么是Bean
2.2.2 Bean的依赖关系
2.2.3 Bean的三种配置方式
2.3 定制容器与Bean的行为
2.3.1 Bean的生命周期
2.3.2 Aware接口的应用
2.3.3 事件机制
2.3.4 容器的扩展点
2.3.5 优雅地关闭容器
茶歇时间:Linux环境下如何关闭进程
2.4 容器中的几种抽象
2.4.1 环境抽象
2.4.2 任务抽象
茶歇时间:该怎么配置线程池
茶歇时间:本地调度vs.分布式调度
2.5 小结
第3章 Spring Framework中的AOP
3.1 Spring中的AOP
3.1.1 AOP的核心概念
3.1.2 Spring AOP的实现原理
茶歇时间:使用代理模式过程中的小坑
3.2 基于@AspectJ的配置
3.2.1 声明切入点
茶歇时间:Spring AOP与AspectJ中PCD的不同之处
3.2.2 声明通知
3.2.3 基于@AspectJ的示例
3.3 基于XML Schema的配置
3.3.1 声明切入点
3.3.2 声明通知
3.3.3 通知器
3.3.4 基于XML Schema的示例
茶歇时间:超简洁的JUnit单元测试入门
3.4 小结
第4章 从Spring Framework到Spring Boot
4.1 Spring Boot基础知识
4.1.1 为什么需要Spring Boot
4.1.2 Spring Boot的组成部分
4.1.3 解析Spring Boot工程
4.2 起步依赖
4.2.1 Spring Boot内置的起步依赖
4.2.2 起步依赖的实现原理
4.3 自动配置
4.3.1 自动配置的实现原理
茶歇时间:通过ImportSelector选择性导入配置
4.3.2 配置项加载机制详解
4.4 编写我们自己的自动配置与起步依赖
4.4.1 编写自己的自动配置
4.4.2 脱离Spring Boot实现自动配置
4.4.3 编写自己的起步依赖
4.5 小结
第5章 面向生产的Spring Boot
5.1 Spring Boot Actuator概述
5.1.1 端点概览
5.1.2 端点配置
茶歇时间:针对Web和Actuator使用不同端口的好处
5.1.3 定制端点信息
5.1.4 开发自己的组件与端点
茶歇时间:为什么要优先通过ObjectProvider获取Bean
5.2 基于Micrometer的系统度量
5.2.1 Micrometer概述
5.2.2 常用度量指标
5.2.3 自定义度量指标
茶歇时间:性能分析时的95线与99线是什么含义
5.2.4 度量值的输出
5.3 部署Spring Boot应用程序
5.3.1 可执行Jar及其原理
5.3.2 构建启动代码
茶歇时间:如何优雅地关闭系统
5.3.3 启动后的一次性执行逻辑
茶歇时间:通过Lombok简化代码
5.4 小结
第二部分 Spring中的数据操作
第6章 Spring中的JDBC
6.1 配置数据源
6.1.1 数据库连接池
茶歇时间:HikariCP为什么说自己比别人快
6.1.2 数据源配置详解
茶歇时间:使用Docker简化本地开发环境的准备工作
6.2 使用JDBC操作数据库
6.2.1 查询类操作
6.2.2 变更类操作
6.2.3 批处理操作
6.2.4 自动配置说明
6.3 事务管理
6.3.1 Spring Framework的事务抽象
6.3.2 Spring事务的基本配置
6.3.3 声明式事务
茶歇时间:通常事务加在哪层比较合适
茶歇时间:声明式事务背后的原理
6.3.4 编程式事务
6.4 异常处理
6.4.1 统一的异常抽象
6.4.2 自定义错误码处理逻辑
6.5 小结
第7章 对象关系映射
7.1 通过Hibernate操作数据库
7.1.1 Hibernate与JPA
7.1.2 定义实体对象
茶歇时间:为什么一定要用Money类来表示金额
茶歇时间:OpenSessionInView问题
7.1.3 通过Hibernate API操作数据库
7.1.4 通过Spring Data的Repository操作数据库
茶歇时间:JpaRepository背后的原理
7.2 通过MyBatis操作数据库
7.2.1 定义MyBatis映射
7.2.2 在Spring中配置并使用MyBatis
7.2.3 提升MyBatis的开发效率
7.3 小结
第8章 数据访问进阶
8.1 连接池的实用配置
8.1.1 保护敏感的连接配置
8.1.2 记录SQL语句执行情况
8.1.3 Druid的Filter扩展
8.2 在Spring工程中访问Redis
8.2.1 配置Redis连接
茶歇时间:Redis的几种部署模式
8.2.2 Redis的基本操作
茶歇时间:本地缓存 vs. 分布式缓存
8.2.3 通过Repository操作Redis
茶歇时间:多种不同的Repository如何共存
8.3 Spring的缓存抽象
8.3.1 基于注解的方法缓存
8.3.2 替换不同的缓存实现
8.4 小结
第三部分 使用Spring开发Web应用
第9章 Spring MVC实践
9.1 简单上手Spring MVC
9.1.1 Spring MVC概览
9.1.2 编写一个简单的控制器
9.2 Spring MVC的请求处理逻辑
9.2.1 请求的处理流程
茶歇时间:Servlet的基础知识
9.2.2 请求处理方法
茶歇时间:请求处理过程中遇到的几个作用范围
茶歇时间:Spring Boot自动配置
预埋的扩展点
9.3 Spring MVC的视图机制
9.3.1 视图解析
9.3.2 常用视图类型
9.3.3 静态资源与缓存
茶歇时间:时间 vs. 空间
9.4 访问Web资源
9.4.1 通过RestTemplate访问Web资源
9.4.2 RestTemplate的进阶用法
茶歇时间:模板设计模式
9.4.3 简单定制RestTemplate
茶歇时间:HttpComponents的Keep-Alive默认策略优化
9.5 小结
第10章 保护Web安全
10.1 认识Spring Security
10.1.1 模块介绍
10.1.2 工作原理
10.2 身份认证
10.2.1 Spring Security的身份认证机制
10.2.2 基于用户名和密码的身份认证
茶歇时间:使用Spring Security加密保存密码
10.2.3 实现“记住我”功能
10.2.4 自定义认证方式
10.3 访问授权
10.3.1 访问授权的判断方式
10.3.2 基本的权限配置
10.3.3 面向方法的访问授权
茶歇时间:如何忽略权限校验
10.4 常见Web攻击防护
10.4.1 跨站请求伪造攻击防护
10.4.2 会话固定攻击防护
10.4.3 跨站脚本攻击防护
10.4.4 点击劫持攻击防护
10.4.5 引导使用HTTPS
10.5 客户端程序的认证
10.5.1 几种常见的认证方式
10.5.2 用RestTemplate实现简单的认证
10.6 小结
第11章 Web开发进阶
11.1 在Spring MVC中实现AOP
11.1.1 使用HandlerInterceptor实现AOP
11.1.2 完善异常处理逻辑
11.2 调整Web容器
11.2.1 更换内嵌Web容器
茶歇时间:不同的Servlet版本与对应的容器
11.2.2 调整内嵌Web容器配置
茶歇时间:如何获得HTTPS证书
11.2.3 支持HTTP/2
茶歇时间:网站提供的HTTPS服务到底是否安全
11.3 支持分布式Session
11.3.1 几种常见的解决方案
11.3.2 使用Spring Session实现分布式Session
11.4 响应式Web
11.4.1 了解Project Reactor
11.4.2 使用WebFlux代替WebMVC
茶歇时间:为什么Project Reactor和WebFlux还没成为主流
11.4.3 通过WebClient访问Web资源
11.5 小结
第四部分 使用Spring开发微服务
第12章 微服务与云原生应用
12.1 走近微服务
12.1.1 什么是微服务
12.1.2 微服务的特点
12.2 RESTful风格的微服务
12.2.1 什么是RESTful风格的微服务
12.2.2 设计RESTful风格的微服务
12.2.3 了解领域驱动设计
12.3 理解云原生
12.3.1 什么是云原生应用
12.3.2 十二要素应用
12.3.3 Spring Cloud概述
12.4 小结
第13章 服务注册与发现
13.1 常见的负载均衡方案
13.1.1 集中式方案
13.1.2 分布式方案
13.2 使用Spring Cloud实现负载均衡
13.2.1 在Zookeeper中注册服务
茶歇时间:为什么Zookeeper不适合做服务注册中心
13.2.2 使用Spring Cloud LoadBalancer访问服务
茶歇时间:@LoadBalanced是如何工作的
13.2.3 使用OpenFeign访问服务
13.3 服务注册与发现的抽象与应用
13.3.1 服务注册的抽象
13.3.2 服务发现的抽象
13.3.3 在Consul中注册服务
13.3.4 在Nacos中注册服务
茶歇时间:Spring Cloud Alibaba概述
13.3.5 在Eureka中注册服务
13.4 小结
第14章 服务配置管理
14.1 使用Spring Cloud Config实现配置管理
14.1.1 为何需要配置中心
14.1.2 基于Spring Cloud Config Server的配置中心
茶歇时间:加解密绕不开的JCE
14.1.3 通过Spring Cloud Config Client访问配置
14.2 服务配置的实现原理与应用
14.2.1 服务配置的实现原理
14.2.2 基于Zookeeper的配置中心
14.2.3 基于Consul的配置中心
14.2.4 基于Alibaba Nacos的配置中心
14.3 小结
第15章 服务容错保护
15.1 常见的服务容错模式
15.1.1 几种常见的容错模式
15.1.2 通过AOP实现简单的容错
15.2 使用Resilience4j实现容错
15.2.1 使用Resilience4j实现限流
15.2.2 使用Resilience4j实现断路
15.2.3 使用Resilience4j实现隔离
15.2.4 resilience4j-spring-boot2的特别说明
15.3 使用Spring Cloud CircuitBreaker实现容错
15.3.1 通过Spring Cloud CircuitBreaker使用Resilience4j
15.3.2 通过Spring Cloud CircuitBreaker使用Sentinel
15.4 小结
第16章 服务集成
16.1 使用Dubbo进行RPC通信
16.1.1 Dubbo概述
16.1.2 Dubbo的基础用法
茶歇时间:多个copyProperties()该如何选择
茶歇时间:为什么对外的接口里不要用枚举
16.2 使用消息中间件进行异步通信
16.2.1 为什么要使用基于消息的异步通信
茶歇时间:常见的消息模型
16.2.2 通过Spring AMQP使用RabbitMQ
16.2.3 通过Spring Cloud Stream使用Kafka
茶歇时间:用Docker Compose在本地启动一套Kafka
16.3 服务链路追踪
16.3.1 链路追踪概述
16.3.2 基于Spring Cloud Sleuth实现链路追踪
茶歇时间:OpenTelemetry概述
16.4 基于Spring Cloud Gateway实现微服务网关
16.4.1 什么是微服务网关
16.4.2 Spring Cloud Gateway的路由配置
16.5 小结
第五部分 附录
附录A 从Spring Boot 2.x升级到3.0
A.1 升级判断标准
A.2 升级操作
A.2.1 依赖组件升级
A.2.2 代码修改
附录B 将应用程序打包为Docker镜像
B.1 编写Dockerfile
茶歇时间:如何选择基础Java Docker镜像
B.2 构建并运行镜像
B.3 构建分层镜像
B.4 其他打包方式
附录C 通过Spring Native打包本地镜像
C.1 GraalVM与Spring Native
C.1.1 GraalVM简介
C.1.2 Spring Native简介
C.2 编译打包本地镜像
C.2.1 准备工作
C.2.2 调整编译打包配置
C.2.3 修改代码
C.2.4 其他优化
后记 549