在当下的互联网应用中,业务体系日益复杂,业务功能也在不断地变化。以典型的电商类应用为例,其背后的业务功能复杂度以及快速迭代要求的开发速度,与5年前的同类业务系统相比,面临着诸多新的挑战。这些挑战中核心的一点就是快速高效地实现系统功能,同时保证代码持续可维护,这是一个非常现实且亟待解决的问题。
面对这样的挑战,需要强调一个观点,就是保持开发过程的简单性,而这种简单性很大程度上来自开发框架。在Java EE领域中,Spring Boot作为Spring家族中的一员,在传统Spring框架的基础上做了创新和优化,将开发人员从以往烦琐的配置工作中解放了出来,并提供了大量的即插即用的集成化组件,从而减少了开发过程中各种组件之间复杂的整合,提高了开发效率,降低了维护成本。
Spring Boot让配置、代码编写、部署和监控都更简单了,因此日益受到开发者的青睐。Spring Boot从2015年开始在国内走红,越来越多的企业选择将Spring Boot作为系统开发的首选框架。如今,Spring Boot已经成为Java工程师必须熟练掌握的基本技能。
但Spring Boot技术体系并不简单,包含大量的技术组件。那么,如何基于Spring Boot从零开始构建一个完整的应用程序?如何高效地掌握Spring Boot中这些技术组件的使用方法和技巧?如何在学习过程中避免掉进“坑”里?这些是学习Spring Boot的广大开发人员想要知道的。
另外,我们知道,Spring Boot是一个集成性的开源框架,内部整合了很多第三方组件和框架。这些组件和框架应用如此之广泛,以至于大家反而往往对如何更好地使用Spring Boot自身的功能特性并不是很重视。事实上,Spring Boot自身的功能特性同样非常丰富,而且在使用上也存在一些最佳实践。
本书对Spring Boot的各项功能特性及其最佳实践、实现原理展开讨论,涵盖了核心容器、Web服务、内置缓存、数据访问、并发编程、监控和扩展等一系列核心主题,这些核心主题也广泛应用于Spring家族中的其他开发框架。
本书面向的读者如下。
本书从Spring Boot进阶的角度切入,具备原创性和体系化,主要体现在五个方面。
本书分成以下七部分。
第一部分:Spring Boot概述。在这一部分,我们介绍Spring Boot框架中的基本概念,并通过简单的案例介绍Spring Boot框架的基本使用方法。通过这一部分的学习,读者可以快速掌握Spring Boot的入门知识。
第二部分:核心容器。在这一部分,我们介绍在使用Spring容器时应该关注的最佳实践,并讨论Spring内核最重要的两个功能特性,即依赖注入和面向切面。我们将从功能的使用和原理的剖析两方面来展开讨论。通过这一部分的学习,读者可以在日常使用Spring容器的过程中明确需要考虑的开发技巧,并掌握依赖注入的不同类型对框架使用方式的影响,以及如何正确选择合适的AOP代理机制。
第三部分:Web服务。在这一部分,我们讨论Web应用程序开发的最佳实践,包括使用Spring HATEOAS开发自解释Web API、使用Spring GraphQL开发查询式Web API、针对传统Spring MVC的异步编程模型,以及新型的基于响应式流的WebFlux组件。同时,我们还讨论目前非常流行的、Spring 5默认内置的、用来提高网络通信性能的RSocket协议。通过这一部分的学习,读者可以系统掌握在使用Spring Boot框架时所应掌握的各个Web开发组件以及对应的使用技巧。
第四部分:内置缓存。在这一部分,我们关注Spring Boot框架的一个高性能功能组件,即缓存。我们讨论Spring中内置缓存的使用方法以及它的底层实现原理,并结合Spring Security框架讨论缓存机制在用户认证流程中的作用。通过这一部分的学习,读者可以掌握Spring针对缓存的抽象思想、架构设计以及实现过程,同时理解高性能安全性的解决方案。
第五部分:数据访问。在这一部分,我们关注高效访问关系型数据的相关实践。我们系统讨论基于JDBC以及ORM框架实现数据访问的常见开发陷阱及其解决方法,同时,进一步分析如何基于缓存机制来优化数据访问性能。通过这一部分的学习,读者可以掌握如何系统性地分析和解决关系型数据访问过程中的开发问题,并深入理解Spring JDBC、Spring Data JPA等框架。
第六部分:并发编程。在这一部分,我们讨论Spring框架的一组并发编程组件,包括任务执行器、任务调度器以及@Async注解,分析这些组件与JDK中的并发编程组件之间的整合过程,并给出源码级的原理分析。通过这一部分的学习,读者可以掌握如何将传统的同步执行模式转化为异步执行模式,从而提升系统的响应性和并发性。
第七部分:监控和扩展。在这一部分,我们关注如何找到Spring Boot应用程序中的性能问题并进行有效的监控和度量,通过引入Actuator组件并整合自定义的度量指标来实现这一目标。同时,我们还讨论Spring Boot的整个生态系统,包括Spring Boot Starter、Spring Boot与微服务、Spring Boot与云原生以及Spring Boot测试方案。通过这一部分的学习,读者可以掌握常见的系统监控和度量的实现方法,以及基于Spring Boot生态圈进行系统扩展的实现方法。
由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。书中的全部源文件可以从华章网站(www.hzbook.com)下载,也可以从作者的GitHub上下载:https://github.com/tianminzheng/spring-boot-examples。如果你有更多的宝贵意见,也欢迎发送邮件至1755982343@qq.com,期待得到你的真挚反馈。
感谢我的家人特别是我的妻子章兰婷女士在我将大量晚上和周末时间用来写作的情况下,能够给予我极大的支持和理解。感谢以往以及现在公司的同事们,身处业界领先的公司和团队中,我得到很多学习和成长的机会,没有大家的帮助,不可能有这本书的诞生。感谢机械工业出版社的杨福川老师,这本书能够这么快出版,离不开他的支持和帮助。