Spring Boot进阶:原理、实战与面试题分析
上QQ阅读APP看书,第一时间看更新

1.2.1 从Spring到Spring Boot

在日常开发过程中,构建典型的Web应用程序通常包含三个维度的工作。首先,从纵向的角度看,可以把Web应用程序分成三个主要的层次,即数据访问(Repository)层、业务逻辑(Service)层和Web层。其次,从横向的角度看,又需要考虑系统的监控、安全等基础设施类需求。最后,Web应用程序并不一定独立运行,而可能需要与其他系统之间进行有效的集成。这样,我们可以把一个Web应用程序进行拆解,如图1-3所示。

017-1

图1-3 Web应用程序的拆分维度示意图

显然,图1-3中的每一个组成部分都需要采用专门的技术和工具分别实现。只有将这些技术和工具有机地结合在一起,才能让这个应用程序完整地运行起来。在这个过程中,我们就不得不考虑如下典型问题。

  • 如何简化各层组件的开发过程?
  • 如何简化对系统中所用到的配置的管理工作?
  • 如何有效监控系统中各个组件的运行时状态?
  • 如何高效实现应用程序的部署?

上述问题集中暴露了传统Spring框架缺乏高效性和简单性的问题。针对系统开发过程中存在的上述问题,在技术体系的演进上,基于传统Spring框架的Spring Boot诞生了。Spring Boot本质上是对传统Spring框架的封装和扩展,其整体架构如图1-4所示。

018-1

图1-4 Spring Boot整体架构

从图1-4中可以看到,在传统Spring框架所提供的各项开发功能的基础上,Spring Boot还提供了一些特有组件来简化开发过程,包括:

  • 自动配置。Spring Boot把传统Spring中基于XML的功能配置方式转换为基于Java Config的。同时,对常见的各种功能组件均提供了默认的Spring Boot Starter依赖以简化Maven配置。
  • 度量监控。基于Spring Boot提供的Actuator组件,可以通过RESTful接口获取JVM性能指标、线程工作状态等运行时信息。同时,也可以使用Admin Server实现监控信息的可视化管理。
  • 一键部署。Spring Boot应用程序内置了Web容器,开发人员只需要直接执行打包好的JAR文件就能实现服务部署和运行,而不需要预部署应用服务器。

Spring Boot大幅降低了常见开发场景的实现难度,同时还充分考虑了安全性、测试性等一系列非功能开发需求。