前言
在当下的互联网应用中,业务体系日益复杂,同时业务功能的发展往往还伴随着不断的变化。以典型的电商类应用为例,其承载的业务功能复杂度以及快速迭代的开发要求,对比5年前的同类业务系统,面临着诸多新的挑战。这些挑战中的核心点就是“要快”。如何快速、高效地实现系统功能,又要保证代码持续可维护,成为一个非常现实且亟待解决的问题。
面对这样的挑战,需要强调一点,就是保持开发过程的简单性,而这种简单性很大程度上取决于开发框架。对于Java EE领域而言,Spring无疑是主流的开发框架。Spring是一个集成的开源框架,内部整合了很多第三方组件和框架。事实上,Spring自身的功能特性同样非常丰富,而且在使用上也存在一些最佳实践。
本书主要介绍基于Spring框架构建企业级应用程序的技术体系和工程实践。本书围绕日常开发过程中所涉及的各种开发需求,讨论了Spring框架所提供的各项解决方案,包括使用Spring Boot开发Web应用程序、使用Spring Cloud开发微服务系统,以及使用Spring 5和响应式编程技术开发响应式系统。同时,本书将基于这些技术体系构建3个完整的案例系统并给出具体的实现过程和示例代码。本书共有19章内容。
第1章,直面Spring。本章作为开篇总领全书,从Spring框架的基本概念出发,引出Spring家族生态和技术体系,以及框架所提供的整体定位和解决方案。本章围绕Spring所具备的各项功能,从Spring Boot与Web应用程序、Spring Cloud与微服务架构、Spring 5与响应式编程等维度切入,分别讨论针对不同应用场景的技术体系。
第2章,Spring Boot配置体系。本章将介绍Spring Boot中的自动配置解决方案,以及如何使用该配置体系来实现复杂的多维配置以及定制化配置。
第3章,Spring Boot数据访问。本章将介绍Spring Boot提供的针对关系数据库的一系列数据访问组件。同时,也将提供对Spring Data这个统一的数据访问抽象框架的全面介绍。
第4章,Spring Boot Web服务。本章将介绍基于Spring Boot构建一个Web服务的系统方法,以及如何实现多个Web服务之间的交互和集成。
第5章,Spring Boot消息通信。本章将介绍消息通信的基本概念,以及如何基于Spring Boot所提供的模板工具类完成与Kafka、ActiveMQ、RabbitMQ等多款主流消息中间件的集成。
第6章,Spring Boot系统监控。本章将介绍Spring Boot中即插即用的服务监控技术组件。Spring Boot内置的各种度量指标、监控端点和可视化管理功能是该框架的亮点。
第7章,SpringCSS:Spring Boot案例实战。本章将基于完整的案例给出Spring Boot各个技术组件的具体应用方式和过程,其中既涉及单个服务的构建方式,也涉及多个服务之间的交互和集成。本章将针对技术组件给出详细的示例代码,并提供能够直接应用于日常开发的实战技巧。
第8章,Spring Cloud注册中心。本章将介绍服务治理的解决方案,以及使用Eureka来构建注册中心服务器/客户端组件的方法和实现原理。同时,也将结合注册中心介绍使用Ribbon实现客户端负载均衡的方法。
第9章,Spring Cloud服务网关。本章将介绍服务网关的构建方式,并给出Spring Cloud Gateway这款典型的服务网关的使用方法和工作机制。
第10章,Spring Cloud服务容错。本章将介绍服务容错思想和模式,并介绍Spring Cloud Circuit Breaker与Hystrix、Resilience4J等熔断器的集成。
第11章,Spring Cloud配置中心。本章将介绍分布式环境下的配置中心解决方案,并介绍如何基于Spring Cloud Config实现配置中心服务器的构建,以及客户端组件的集成。
第12章,Spring Cloud消息通信。本章将介绍基于Spring Cloud Stream实现消息发布者和消费者的开发方法,并基于Spring Cloud Stream基本架构剖析其集成Rabbit、Kafka等主流消息中间件的实现过程。
第13章,Spring Cloud服务监控。本章将介绍Spring Cloud Sleuth的基本原理,以及基于Spring Cloud Sleuth与Zipkin实现可视化监控的整合过程,同时给出基于Tracer在访问链路中创建自定义跟踪信息的实现方法。
第14章,SpringHealth:Spring Cloud案例实战。本章将基于案例帮助读者全面梳理基于Spring Cloud的微服务系统开发技术组件。通过完整的案例系统,给出各个组件的具体应用方式和过程,并提供能够直接应用于日常开发的实战技巧。
第15章,响应式编程基础。本章将介绍响应式系统和响应式编程的基本概念以及应用场景,并分析响应式编程模型所包含的响应式流和背压机制,这是实现系统弹性的关键。
第16章,Project Reactor。本章将介绍目前业界领先的响应式编程框架Project Reactor,它有多种组合方式和完善的异常处理机制,以及面对背压时的处理机制、重试机制。
第17章,WebFlux和RSocket。本章将介绍如何使用Spring中全新的Web开发框架WebFlux来构建响应式RESTful服务,如何使用WebClient工具类来调用响应式服务以及如何使用全新的RSocket协议来实现网络通信中的响应式数据传输。
第18章,响应式Spring Data。本章将讨论如何构建响应式数据访问层,介绍如何使用Spring Data Reactive组件来实现这一目标。MongoDB和Redis都内置了支持响应式数据访问的驱动程序。另外,传统的JDBC并不支持响应式编程模式,但Spring家族也专门提供了Spring Data R2DBC框架来解决这一问题。
第19章,ReactiveSpringCSS:响应式Spring案例实战。本章将提供一个 ReactiveSpringCSS案例来贯穿整个学习过程,内容涉及响应式Web、响应式数据访问、响应式消息通信等主题。在介绍每个主题时,本章会为案例系统添加相应的功能特性。通过完整的案例系统,本章会给出各个组件的具体应用方式和过程,并提供能够直接应用于日常开发的实战技巧。
以上19章内容可以分成4篇,其中第1章作为独立的开篇,对Spring框架进行了概述;第2~7章是Spring Boot篇,第8~14章是Spring Cloud篇,而第15~19章则是响应式编程篇。基于这4篇内容,本书对Spring的技术体系和核心组件进行了全面且系统的阐述,本书主要面向广大服务端开发人员以及对Spring框架有兴趣的开发人员。
感谢我的家人,特别是我的妻子章兰婷女士,对我因撰写本书而大量占用晚上和周末时间的情况,能够给予极大的支持和理解。感谢前公司以及现公司的同事,身处业界领先的公司和团队,我得到很多学习和成长的机会。没有大家平时的帮助,就不可能有这本书的诞生。感谢拉勾教育,感谢人民邮电出版社的武晓燕编辑,这本书能够顺利出版,离不开大家的帮助。
由于作者水平和经验有限,书中难免有欠妥和错误之处,恳请读者批评指正。
郑天民