从企业级开发到云原生微服务:Spring Boot实战

从企业级开发到云原生微服务:Spring Boot实战
作 者: 汪云飞
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  汪云飞,开源技术专家,拥有10年以上的JavaEE开发经验。对开源Java框架(Spring、Hibernate/JPA、Spring Boot)、开源GIS(GeoServer、OpenLayers),开源云计算解决方案(IaaS:ClouStack、OpenStack;PaaS:Apache Mesos、Deis、Docker)颇有研究。其撰写的技术博客被大量的阅读和转载。

内容简介

本书以Spring 5.2和Spring Boot 2.2为基础,系统地讲解了在日常企业级开发和微服务开发中面临的大部分的问题,如函数式编程、Spring MVC、Spring Data、Spring Security、响应式编程、事件驱动、Spring Integration、Spring Batch、Spring Cloud、Kubernetes 与微服务等。本书内容由浅入深,适合有Java基础的初级程序员学习。同时,本书还介绍了较深的理论及原理知识,可供中、高级工程师提升使用。本书讲解的所有主题都附有实战案例,读者可快速将相关技术应用于工作实践中。

图书目录

第1章 初识Spring Boot\t1

1.1 Spring Boot概述\t1

1.2 快速建立Spring Boot应用\t2

1.2.1 安装Java\t2

1.2.2 使用Spring Initializr\t2

1.2.3 第一段代码\t3

1.3 体验Spring Boot\t4

1.3.1 Spring Boot的应用结构\t4

1.3.2 build.gradle\t5

1.3.3 QuickStartApplication\t5

1.3.4 application.properties\t6

1.4 小结\t6

第2章 函数式编程\t7

2.1 了解函数式编程\t7

2.2 Lambda表达式\t7

2.2.1 了解Lambda表达式\t7

2.2.2 把Lambda表达式作为参数\t8

2.3 函数接口\t9

2.3.1 Predicate\t10

2.3.2 Function\t12

2.3.3 Consumer\t14

2.3.4 Supplier\t14

2.3.5 Operator\t15

2.3.6 Comparator\t15

2.3.7 自定义函数接口\t16

2.4 方法引用\t16

2.4.1 构造器方法引用\t16

2.4.2 静态方法引用\t17

2.4.3 实例方法引用\t18

2.4.4 引用特定类的任意对象的方法\t18

2.5 Stream\t18

2.5.1 Stream简介\t19

2.5.2 获得Stream\t19

2.5.3 中间操作\t20

2.5.4 终结操作\t23

2.6 Optional\t27

2.6.1 获得Optional\t28

2.6.2 Optional的用法\t28

2.7 小结\t29

第3章 Spring 5.X基础\t30

3.1 IoC容器\t30

3.2 Spring Bean的配置\t31

3.2.1 注解配置(@Component)\t31

3.2.2 Java配置(@Configuration和@Bean)\t31

3.2.3 依赖注入(Dependency Injection)\t32

3.2.4 运行检验(CommandLineRunner)\t37

3.2.5 Bean的Scope\t38

3.2.6 Bean的生命周期\t40

3.2.7 应用环境\t43

3.2.8 条件配置(@Conditional)\t46

3.2.9 开启配置(@Enable*和@Import)\t47

3.3 对Bean的处理(BeanPostProcessor)\t53

3.4 Spring Aware容器\t54

3.5 Bean之间的事件通信\t57

3.6 Spring EL\t59

3.7 AOP\t61

3.8 注解工作原理\t64

3.8.1 BeanPostProcessor\t64

3.8.2 BeanFactoryPostProcessor\t66

3.8.3 使用AOP\t68

3.8.4 组合元注解\t68

3.9 小结\t68

第4章 深入Spring Boot\t69

4.1 Spring Boot介绍\t69

4.2 Spring Boot的“魔法”\t69

4.2.1 加载自动配置\t69

4.2.2 实现自动配置\t71

4.3 Spring Boot的配置\t73

4.3.1 应用配置\t74

4.3.2 修改默认配置\t76

4.3.3 外部配置\t79

4.4 日志和报告\t91

4.4.1 日志\t91

4.4.2 报告\t93

4.5 多线程任务和计划任务\t94

4.5.1 Task Executor\t94

4.5.2 Task Scheduler\t97

4.6 Gradle插件\t99

4.6.1 依赖\t99

4.6.2 Spring Boot Starter\t100

4.6.3 插件任务\t100

4.7 自定义Starter\t100

4.7.1 包装技术库\t101

4.7.2 Starter的结构\t103

4.7.3 autoconfigure模块\t105

4.7.4 Starter模块\t107

4.7.5 使用Starter\t108

4.8 Spring Boot Actuator\t110

4.8.1 常用端点\t110

4.8.2 自定义\t119

4.8.3 使用Prometheus和Grafana监控指标\t124

4.9 小结\t128

第5章 Spring Web MVC\t129

5.1 Spring Web MVC简介\t129

5.2 用Spring Boot学习Web MVC\t129

5.2.1 核心注解\t129

5.2.2 RESTful服务\t130

5.2.3 @ControllerAdvice\t146

5.2.4 @RestControllerAdvice\t151

5.2.5 JSON定制\t156

5.2.6 RestTemplate\t159

5.3 Web MVC配置\t161

5.3.1 Spring MVC的工作原理\t161

5.3.2 配置MVC\t161

5.3.3 Interceptor\t162

5.3.4 Formatter\t164

5.3.5 HttpMessageConverter\t166

5.3.6 方法参数和返回值处理设置\t169

5.3.7 初始化数据绑定设置\t176

5.3.8 类型转换原理与设置\t176

5.3.9 路径匹配和内容协商\t183

5.3.10 JSON\t188

5.3.11 其他外部属性配置\t189

5.4 Servlet容器\t191

5.4.1 注册Servlet、Filter和Listener\t191

5.4.2 配置Servlet容器\t196

5.5 异步请求\t202

5.5.1 Servlet 3.0 异步返回\t202

5.5.2 HTTP Streaming\t206

5.5.3 HTTP/2\t212

5.6 小结\t214

第6章 数据访问\t215

6.1 Spring Data Repository\t215

6.1.1 DDD与Spring Data Repository\t215

6.1.2 查询方法\t218

6.2 关系数据库――Spring Data JPA\t218

6.2.1 JPA、Hibernate和Spring Data JPA\t218

6.2.2 环境准备\t218

6.2.3 自动配置\t220

6.2.4 定义聚合\t221

6.2.5 定义聚合Repository\t224

6.2.6 查询\t226

6.2.7 事件监听\t238

6.2.8 领域事件\t242

6.2.9 审计功能\t245

6.2.10 Web支持\t246

6.2.11 数据库初始化\t248

6.3 NoSQL――Spring Data Elasticsearch\t252

6.3.1 Elascticsearch简介\t252

6.3.2 环境准备\t252

6.3.3 在Spring Boot中的自动配置\t253

6.3.4 定义聚合\t254

6.3.5 定义聚合Repository\t255

6.3.6 查询\t256

6.4 数据缓存\t261

6.4.1 Spring Boot与缓存\t261

6.4.2 环境准备\t262

6.4.3 使用缓存注解\t264

6.5 小结\t266

第7章 安全控制\t267

7.1 Spring Security的应用\t267

7.1.1 Spring Boot的自动配置\t267

7.1.2 开启Web安全配置\t268

7.1.3 定制Web安全配置\t268

7.1.4 Authentication\t269

7.1.5 Authorization\t281

7.1.6 Spring Data集成\t294

7.2 Spring Security实战\t295

7.3 OAuth 2.0\t301

7.3.1 OAuth 2.0 Authorization Server\t301

7.3.2 OAuth 2.0 Resource Server\t310

7.3.3 OAuth 2.0 Client\t317

7.4 小结\t322

第8章 响应式编程\t323

8.1 Project Reactor\t323

8.1.1 Reactive Streams的基础接口\t323

8.1.2 Flux和Mono\t325

8.2 Spring WebFlux\t327

8.2.1 Spring WebFlux基础\t327

8.2.2 Spring Boot的自动配置\t328

8.2.3 注解控制器\t329

8.2.4 函数式端点\t332

8.2.5 Spring WebFlux的配置\t334

8.3 Reactive NoSQL\t334

8.3.1 响应式Elasticsearch\t335

8.3.2 响应式MongoDB\t339

8.4 Reactive关系型数据库:R2DBC\t342

8.4.1 安装PostgreSQL\t343

8.4.2 Spring Boot的自动配置\t343

8.4.3 示例\t344

8.5 Reactive Spring Security\t347

8.5.1 Reactive Spring Security原理\t347

8.5.2 Spring Boot的自动配置\t347

8.5.3 示例\t348

8.6 小结\t354

第9章 事件驱动\t355

9.1 JMS\t355

9.1.1 安装Apache ActiveMQ Artemis\t355

9.1.2 新建应用\t356

9.1.3 Spring Boot的自动配置\t356

9.1.4 示例\t356

9.1.5 Topic和Queue\t358

9.2 RabbitMQ\t360

9.3 Kafka\t367

9.4 Websocket\t374

9.4.1 STOMP Websocket\t374

9.4.2 Reactive Websocket\t379

9.5 RSocket\t382

9.5.1 新建应用\t382

9.5.2 Spring Boot的自动配置\t383

9.5.3 示例\t383

9.6 小结\t388

第10章 系统集成与批处理\t389

10.1 Spring Integration\t389

10.1.1 Spring Integration基础\t389

10.1.2 Spring Integration Java DSL\t391

10.1.3 示例\t392

10.2 Spring Batch\t395

10.2.1 Spring Batch的流程\t396

10.2.2 Spring Boot的自动配置\t396

10.2.3 示例\t397

10.3 小结\t402

第11章 Spring Cloud与微服务\t403

11.1 微服务基础\t403

11.1.1 微服务和云原生应用\t403

11.1.2 领域驱动设计\t404

11.2 Spring Cloud\t405

11.2.1 服务发现\t405

11.2.2 配置管理\t408

11.2.3 同步服务交互\t412

11.2.4 异步服务交互\t417

11.2.5 响应式异步交互\t427

11.2.6 应用网关:Spring Cloud Gateway\t430

11.2.7 认证授权\t433

11.3 小结\t442

第12章 Kubernetes与微服务\t443

12.1 Kubernetes\t443

12.1.1 安装\t443

12.1.2 Kubernetes基础知识\t445

12.1.3 Helm\t460

12.1.4 DevOps\t463

12.1.5 安装Jenkins\t464

12.1.6 微服务示例\t465

12.1.7 镜像仓库和Dockerfile\t467

12.1.8 使用Helm打包应用\t471

12.1.9 Jenkins流程\t475

12.2 Service Mesh和Istio\t481

12.2.1 安装Istio\t482

12.2.2 微服务示例\t483

12.3 小结\t490