前言

Spring 进入开发领域已经超过了 18 年,它的基本使命是使 Java 应用的开发更容易。最初,这意味着它会提供一个轻量级的 EJB 2.x 替代方案。但这只是 Spring 的序幕。多年来,Spring 将其简化开发的使命扩展到了解决我们面临的各种挑战上,包括持久化、安全性、集成、云计算等。

尽管 Spring 在实现和简化企业级 Java 开发方面已走过了近 20 年,但它丝毫没有显示出发展速度放缓的迹象。Spring 在继续解决 Java 开发的挑战,无论是创建部署在传统应用服务器上的应用,还是创建部署在云端 Kubernetes 集群上的容器化应用程序。随着 Spring Boot 开始提供自动配置、构建依赖辅助和运行时监控等功能,现在是成为 Spring 开发者的理想时机。

本书是 Spring 和 Spring Boot 指南,在第 5 版基础上进行了升级更新,以反映这两项技术所提供的新内容。即便是 Spring 新手,在第 1 章结束之前,也可以启动并运行第一个 Spring 应用。跟随本书,你会学习创建 Web 应用、处理数据、保证应用安全,以及管理应用配置等内容。接下来,你会探索将 Spring 应用与其他应用程序集成的方法,以及如何让 Spring 应用从反应式编程中获益,包括使用新的 RSocket 通信协议。在本书的末尾,你会看到如何为生产环境准备我们的应用程序,并学习各种部署方案。

无论你是第一次接触 Spring,还是有多年的 Spring 开发经验,这本书都会带你开展一段精彩旅程。我为你感到兴奋,也很荣幸能为你编写这份指南。我期待你使用 Spring 创造出精彩的应用!

关于本书

本书分成 4 个部分,共计 18 章。

第 1 部分涵盖了构建 Spring 应用的基础知识。

  • 第 1 章介绍 Spring、Spring Boot,以及如何初始化 Spring 项目。我们在这章中迈出构建 Spring 应用的第一步,在本书后续章节中,我们会对这个应用进行扩展。

  • 第 2 章讨论如何使用 Spring MVC 构建应用的 Web 层。我们会构建处理 Web 请求的控制器,并在浏览器中渲染信息的视图。

  • 第 3 章深入探讨 Spring 应用的后端,在这里数据会持久化到关系型数据库中。

  • 第 4 章会继续数据持久化的话题,学习如何将数据持久化到非关系型数据库 Cassandra 和 MongoDB 中。

  • 第 5 章介绍如何使用 Spring Security 认证用户并防止未认证的用户访问应用。

  • 第 6 章介绍如何使用 Spring Boot 的配置属性功能来配置 Spring 应用。我们还会在这章学习如何使用 profile 选择性地应用配置。

第 2 部分讨论了如何将 Spring 应用与其他应用进行集成。

  • 第 7 章延续第 2 章对 Spring MVC 的讨论,我们会学习如何在 Spring 中编写和消费 REST API。

  • 第 8 章展示如何使用 Spring Security 和 OAuth 2 保护我们在第 7 章创建的 API。

  • 第 9 章讨论如何使用异步通信技术让 Spring 应用发送和接收消息,这里会用到 Java Message Service、RabbitMQ 或 Kafka。

  • 第 10 章讨论如何使用 Spring Integration 进行声明式地应用集成。

第 3 部分探讨了 Spring 对反应式编程提供的全新支持。

  • 第 11 章介绍 Reactor 项目,这是一个反应式编程库,支撑 Spring 5 的反应式特性。

  • 第 12 章重新探讨 REST API 开发,介绍全新的 Web 框架 Spring WebFlex。该框架借用了很多 Spring MVC 的理念,为 Web 开发提供了新的反应式模型。

  • 第 13 章介绍如何使用 Spring Data 编写反应式数据持久化,我们会尝试读取和写入 Cassandra 与 Mongo 数据库。

  • 第 14 章介绍 RSocket 协议。这是一个新的通信协议,在创建 API 方面,它提供了 HTTP 协议的反应式替代方案。

第 4 部分介绍了如何做好应用投入生产环境前的准备工作,以及如何进行部署。

  • 第 15 章介绍 Spring Boot Actuator。这是 Spring Boot 的一个扩展,它通过 REST 端点的形式暴露 Spring 应用内部的运行状况。

  • 第 16 章介绍如何使用 Spring Boot Admin。它是构建在 Actuator 之上的一个对用户友好的基于浏览器的管理应用。

  • 第 17 章讨论如何将 Spring bean 暴露为 JMX MBean,以及如何消费它们。

  • 最后,第 18 章介绍如何将 Spring 应用部署到各种生产环境中,包括 Kubernetes。

一般来讲,刚刚接触 Spring 的开发人员应该从第 1 章开始,按顺序阅读每一章。经验丰富的 Spring 开发人员可能更愿意从任何其感兴趣的章节开始阅读。每一章都是建立在前一章的基础上的,所以如果从中间开始阅读,可能会漏掉一些前文信息。