学透Spring:从入门到项目实战
全新正版 极速发货
¥
112.52
7.0折
¥
159.8
全新
库存25件
作者丁雪丰
出版社人民邮电
ISBN9787115609113
出版时间2023-02
装帧平装
开本其他
定价159.8元
货号31672049
上书时间2024-06-05
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
丁雪丰美团研究员、技术图书作译者、极客时间《玩转Spring全家桶》课程讲师。获得了“上海市青年金才”“腾讯云价值专家”等称号。致力于推动先进技术在国内的发展,是SpringFramework2.0和SpringFramework2.5官方文档翻译项目的负责人,翻译及原创出版了《SpringBoot实战》《Spring攻略》《RESTfulWebServicesCookbook中文版》等8部图书。曾就职于平安壹钱包、百度与,在互联网金融、支付等领域积累了丰富的大型系统构建经验。
目录
第 一部分 Spring入门
第 1章 初识 Spring2
1.1 认识 Spring 家族2
1.1.1 Spring 发展历史2
1.1.2 Spring 家族主要成员4
1.2 编写第 一个 Spring 程序7
1.2.1 基础环境准备8
1.2.2 通过Spring Initializr创建工程12
1.2.3 编写简单的REST服务14
1.3 实战案例说明16
1.3.1 需求描述16
1.3.2 模块说明17
1.4 小结19
第 2章 Spring Framework中的IoC容器20
2.1 IoC容器基础知识20
2.1.1 什么是IoC容器20
2.1.2 容器的初始化21
2.1.3 BeanFactory与ApplicationContext23
2.1.4 容器的继承关系24
2.2 Bean基础知识27
2.2.1 什么是Bean27
2.2.2 Bean的依赖关系27
2.2.3 Bean的三种配置方式30
2.3 定制容器与Bean的行为33
2.3.1 Bean的生命周期33
2.3.2 Aware接口的应用37
2.3.3 事件机制37
2.3.4 容器的扩展点39
2.3.5 优雅地关闭容器40
茶歇时间:Linux环境下如何关闭进程41
2.4 容器中的几种抽象42
2.4.1 环境抽象42
2.4.2 任务抽象44
茶歇时间:该怎么配置线程池45
茶歇时间:本地调度vs.分布式调度47
2.5 小结47
第3章 Spring Framework中的AOP48
3.1 Spring中的AOP48
3.1.1 AOP的核心概念48
3.1.2 Spring AOP的实现原理49
茶歇时间:使用代理模式过程中的小坑51
3.2 基于@AspectJ的配置52
3.2.1 声明切入点53
茶歇时间:Spring AOP与AspectJ中PCD的不同之处54
3.2.2 声明通知55
3.2.3 基于@AspectJ的示例57
3.3 基于XML Schema的配置61
3.3.1 声明切入点62
3.3.2 声明通知62
3.3.3 通知器64
3.3.4 基于XML Schema的示例64
茶歇时间:超简洁的JUnit单元测试入门65
3.4 小结66
第4章 从Spring Framework到Spring Boot67
4.1 Spring Boot基础知识67
4.1.1 为什么需要Spring Boot67
4.1.2 Spring Boot的组成部分68
4.1.3 解析Spring Boot工程70
4.2 起步依赖71
4.2.1 Spring Boot内置的起步依赖72
4.2.2 起步依赖的实现原理73
4.3 自动配置75
4.3.1 自动配置的实现原理75
茶歇时间:通过ImportSelector选择性导入配置76
4.3.2 配置项加载机制详解77
4.4 编写我们自己的自动配置与起步依赖79
4.4.1 编写自己的自动配置80
4.4.2 脱离Spring Boot实现自动配置83
4.4.3 编写自己的起步依赖87
4.5 小结88
第5章 面向生产的Spring Boot89
5.1 Spring Boot Actuator概述89
5.1.1 端点概览89
5.1.2 端点配置92
茶歇时间:针对Web和Actuator使用不同端口的好处95
5.1.3 定制端点信息96
5.1.4 开发自己的组件与端点98
茶歇时间:为什么要优先通过ObjectProvider获取Bean100
5.2 基于Micrometer的系统度量101
5.2.1 Micrometer概述102
5.2.2 常用度量指标103
5.2.3 自定义度量指标107
茶歇时间:性能分析时的95线与99线是什么含义110
5.2.4 度量值的输出111
5.3 部署Spring Boot应用程序112
5.3.1 可执行Jar及其原理112
5.3.2 构建启动代码115
茶歇时间:如何优雅地关闭系统117
5.3.3 启动后的一次性执行逻辑118
茶歇时间:通过Lombok简化代码121
5.4 小结122
第二部分 Spring中的数据操作
第6章 Spring中的JDBC124
6.1 配置数据源124
6.1.1 数据库连接池124
茶歇时间:HikariCP为什么说自己比别人快127
6.1.2 数据源配置详解128
茶歇时间:使用Docker简化本地开发环境的准备工作133
6.2 使用JDBC操作数据库134
6.2.1 查询类操作135
6.2.2 变更类操作139
6.2.3 批处理操作141
6.2.4 自动配置说明143
6.3 事务管理143
6.3.1 Spring Framework的事务抽象144
6.3.2 Spring事务的基本配置146
6.3.3 声明式事务148
茶歇时间:通常事务加在哪层比较合适 151
茶歇时间:声明式事务背后的原理153
6.3.4 编程式事务154
6.4 异常处理155
6.4.1 统一的异常抽象155
6.4.2 自定义错误码处理逻辑157
6.5 小结158
第7章 对象关系映射160
7.1 通过Hibernate操作数据库160
7.1.1 Hibernate与JPA160
7.1.2 定义实体对象162
茶歇时间:为什么一定要用Money类来表示金额165
茶歇时间:OpenSessionInView问题168
7.1.3 通过Hibernate API操作数据库169
7.1.4 通过Spring Data的Repository操作数据库173
茶歇时间:JpaRepository背后的原理178
7.2 通过MyBatis操作数据库179
7.2.1 定义MyBatis映射180
7.2.2 在Spring中配置并使用MyBatis184
7.2.3 提升MyBatis的开发效率187
7.3 小结193
第8章 数据访问进阶194
8.1 连接池的实用配置194
8.1.1 保护敏感的连接配置194
8.1.2 记录SQL语句执行情况197
8.1.3 Druid的Filter扩展200
8.2 在Spring工程中访问Redis202
8.2.1 配置Redis连接202
茶歇时间:Redis的几种部署模式204
8.2.2 Redis的基本操作206
茶歇时间:本地缓存 vs. 分布式缓存212
8.2.3 通过Repository操作Redis212
茶歇时间:多种不同的Repository如何共存216
8.3 Spring的缓存抽象217
8.3.1 基于注解的方法缓存217
8.3.2 替换不同的缓存实现221
8.4 小结224
第三部分 使用Spring开发Web应用
第9章 Spring MVC实践226
9.1 简单上手Spring MVC226
9.1.1 Spring MVC概览226
9.1.2 编写一个简单的控制器227
9.2 Spring MVC的请求处理逻辑234
9.2.1 请求的处理流程234
茶歇时间:Servlet的基础知识240
9.2.2 请求处理方法241
茶歇时间:请求处理过程中遇到的几个作用范围243
茶歇时间:Spring Boot自动配置
预埋的扩展点245
9.3 Spring MVC的视图机制252
9.3.1 视图解析252
9.3.2 常用视图类型253
9.3.3 静态资源与缓存260
茶歇时间:时间 vs. 空间263
9.4 访问Web资源264
9.4.1 通过RestTemplate访问Web资源264
9.4.2 RestTemplate的进阶用法270
茶歇时间:模板设计模式275
9.4.3 简单定制RestTemplate275
茶歇时间:HttpComponents的Keep-Alive默认策略优化277
9.5 小结278
第 10章 保护Web安全279
10.1 认识Spring Security279
10.1.1 模块介绍280
10.1.2 工作原理280
10.2 身份认证282
10.2.1 Spring Security的身份认证机制282
10.2.2 基于用户名和密码的身份认证283
茶歇时间:使用Spring Security加密保存密码284
10.2.3 实现“记住我”功能294
10.2.4 自定义认证方式298
10.3 访问授权303
10.3.1 访问授权的判断方式303
10.3.2 基本的权限配置304
10.3.3 面向方法的访问授权308
茶歇时间:如何忽略权限校验310
10.4 常见Web攻击防护311
10.4.1 跨站请求伪造攻击防护311
10.4.2 会话固定攻击防护316
10.4.3 跨站脚本攻击防护316
10.4.4 点击劫持攻击防护317
10.4.5 引导使用HTTPS317
10.5 客户端程序的认证319
10.5.1 几种常见的认证方式319
10.5.2 用RestTemplate实现简单的认证320
10.6 小结323
第 11章 Web开发进阶325
11.1 在Spring MVC中实现AOP325
11.1.1 使用HandlerInterceptor实现AOP325
11.1.2 完善异常处理逻辑329
11.2 调整Web容器333
11.2.1 更换内嵌Web容器334
茶歇时间:不同的Servlet版本与对应的容器335
11.2.2 调整内嵌Web容器配置335
茶歇时间:如何获得HTTPS证书338
11.2.3 支持HTTP/2341
茶歇时间:网站提供的HTTPS服务到底是否安全 345
11.3 支持分布式Session346
11.3.1 几种常见的解决方案346
11.3.2 使用Spring Session实现分布式Session348
11.4 响应式Web353
11.4.1 了解Project Reactor354
11.4.2 使用WebFlux代替WebMVC359
茶歇时间:为什么Project Reactor和WebFlux还没成为主流363
11.4.3 通过WebClient访问Web资源366
11.5 小结371
第四部分 使用Spring开发微服务
第 12章 微服务与云原生应用374
12.1 走近微服务374
12.1.1 什么是微服务374
12.1.2 微服务的特点375
12.2 RESTful风格的微服务377
12.2.1 什么是RESTful风格的微服务377
12.2.2 设计RESTful风格的微服务379
12.2.3 了解领域驱动设计383
12.3 理解云原生385
12.3.1 什么是云原生应用385
12.3.2 十二要素应用386
12.3.3 Spring Cloud概述390
12.4 小结391
第 13章 服务注册与发现392
13.1 常见的负载均衡方案392
13.1.1 集中式方案392
13.1.2 分布式方案395
13.2 使用Spring Cloud实现负载均衡396
13.2.1 在Zookeeper中注册服务396
茶歇时间:为什么Zookeeper不适合做服务注册中心398
13.2.2 使用Spring Cloud LoadBalancer访问服务398
茶歇时间:@LoadBalanced是如何工作的399
13.2.3 使用OpenFeign访问服务400
13.3 服务注册与发现的抽象与应用405
13.3.1 服务注册的抽象405
13.3.2 服务发现的抽象406
13.3.3 在Consul中注册服务406
13.3.4 在Nacos中注册服务408
茶歇时间:Spring Cloud Alibaba概述411
13.3.5 在Eureka中注册服务411
13.4 小结414
第 14章 服务配置管理415
14.1 使用Spring Cloud Config实现配置管理415
14.1.1 为何需要配置中心415
14.1.2 基于Spring Cloud Config Server的配置中心416
茶歇时间:加解密绕不开的JCE423
14.1.3 通过Spring Cloud Config Client访问配置423
14.2 服务配置的实现原理与应用426
14.2.1 服务配置的实现原理426
14.2.2 基于Zookeeper的配置中心429
14.2.3 基于Consul的配置中心431
14.2.4 基于Alibaba Nacos的配置中心433
14.3 小结436
第 15章 服务容错保护437
15.1 常见的服务容错模式437
15.1.1 几种常见的容错模式437
15.1.2 通过AOP实现简单的容错440
15.2 使用Resilience4j实现容错447
15.2.1 使用Resilience4j实现限流447
15.2.2 使用Resilience4j实现断路453
15.2.3 使用Resilience4j实现隔离457
15.2.4 resilience4j-spring-boot2的特别说明461
15.3 使用Spring Cloud CircuitBreaker实现容错462
15.3.1 通过Spring Cloud CircuitBreaker使用Resilience4j463
15.3.2 通过Spring Cloud CircuitBreaker使用Sentinel466
15.4 小结476
第 16章 服务集成477
16.1 使用Dubbo进行RPC通信477
16.1.1 Dubbo概述477
16.1.2 Dubbo的基础用法479
茶歇时间:多个copyProperties()该如何选择482
茶歇时间:为什么对外的接口里不要用枚举484
16.2 使用消息中间件进行异步通信488
16.2.1 为什么要使用基于消息的异步通信488
茶歇时间:常见的消息模型489
16.2.2 通过Spring AMQP使用RabbitMQ489
16.2.3 通过Spring Cloud Stream使用Kafka495
茶歇时间:用Docker Compose在本地启动一套Kafka501
16.3 服务链路追踪502
16.3.1 链路追踪概述503
16.3.2 基于Spring Cloud Sleuth实现链路追踪505
茶歇时间:OpenTelemetry概述509
16.4 基于Spring Cloud Gateway实现微服务网关510
16.4.1 什么是微服务网关510
16.4.2 Spring Cloud Gateway的路由配置512
16.5 小结522
第五部分 附录
附录A 从Spring Boot 2.x升级到3.0526
A.1 升级判断标准526
A.2 升级操作526
A.2.1 依赖组件升级527
A.2.2 代码修改529
附录B 将应用程序打包为Docker镜像531
B.1 编写Dockerfile531
茶歇时间:如何选择基础Java Docker镜像532
B.2 构建并运行镜像533
B.3 构建分层镜像534
B.4 其他打包方式535
附录C 通过Spring Native打包本地镜像536
C.1 GraalVM与Spring Native536
C.1.1 GraalVM简介536
C.1.2 Spring Native简介537
C.2 编译打包本地镜像538
C.2.1 准备工作538
C.2.2 调整编译打包配置539
C.2.3 修改代码542
C.2.4 其他优化547
后记549
内容摘要
本书的目标是让大家又快又好地打包学透Spring技术栈,内容将涉及SpringFramework、SpringBoot、 SpringCloud等Spring家族成员。 本书分为四部分:第一部分“Spring入门”,先学习基本的SpringIoC、AOP,随后过渡到当下热门的SpringBoot;第二部分“Spring中的数据操作”,其中既有常规的SQL、NoSQL数据操作,也有进阶的数据源配置和缓存抽象;第三部分“使用Spring开发Web应用”,讲述SpringMVC细节的同时,也不放过Web安全与REST;第四部分“使用Spring开发微服务”,除了常规的SpringCloud模块,也会讲解SpringCloudAlibaba。在讲解具体内容的基本示例之外,书中还设计了一个贯穿主要章节的实战案例,带大家一步步从零开始实现一个灵活运用全书内容的项目“二进制奶茶店”。 本书重实战、重工程现实,是业内专业人员丁雪丰亲历的有效学习路径,汇集了作者多年的实战经验。跟着兔子书,只要具备Java基础知识,就可以快速上手Spring,并落地实战项目和生产环境。
— 没有更多了 —
以下为对购买帮助不大的评价