一个完善的应用程序,常常需要这些特性:精简明确的配置,快速集成第三方组件,统一的打包部署方式,方便单元测试/功能测试,良好的监控能力等。Spring Boot出现之前,这些都需要开发者自行摸索解决,得到的方案可能大同小异,在尝到“约定大于配置”的好处后,人们自然不甘于此,于是Spring Boot应运而生。

1. Spring Boot是什么

Spring Boot的设计目的是用来简化新Spring应用的初始搭建以及开发过程,快速创建生产级的基于Spring的应用程序,达到开箱即用的效果。它具有以下主要特性:

  1. 为所有Spring开发提供一个更快、更广泛的入门体验。
  2. 开箱即用,Spring Boot拥有合理的默认值,同时又能快速响应需求的变化。
  3. 提供对大型项目(如嵌入式服务器、安全性、指标监控、健康检查和外部化配置)常见的一系列非功能性特性。
  4. 绝对没有代码生成,也不需要XML配置

2. Spring Boot提供的功能

官方文档的基础上,笔者以表格的形式罗列Spring Boot下的所有module,使读者对其有一个完整印象。

自上而下的全局印象,往往比细节更为重要。当然,具体的细节讨论及使用,后续的文章中也会逐一分析。

module 说明 重要程度
spring-boot 核心库,提供基础功能 ⭐️ ⭐️ ⭐️ ⭐️ ⭐️
spring-boot-autoconfigure 和 spring-boot-starters 使用autoconfigure提供自动配置功能;使用Starter达到快速集成的目的 ⭐️ ⭐️ ⭐️ ⭐️ ⭐️
spring-boot-actuator 和 spring-boot-actuator-autoconfigure 生产级的非功能性特性,一些监控、健康检查等功能 ⭐️ ⭐️ ⭐️ ⭐️ ⭐️
spring-boot-test 和 spring-boot-test-autoconfigure 基于spring boot的测试支持 ⭐️ ⭐️ ⭐️ ⭐️
spring-boot-parent 和 spring-boot-dependencies 是所有其他module的父节点,使依赖版本在同一位置管理 ⭐️ ⭐️ ⭐️ ⭐️
spring-boot-devtools 开发者工具集,包含自动重启、浏览器自动刷新、远程调试等功能 ⭐️ ⭐️ ⭐️
spring-boot-tools maven/gradle插件、可执行jar等功能 ⭐️ ⭐️ ⭐️
spring-boot-cli 提供一套命令行工具 ⭐️ ⭐️
spring-boot-properties-migrator 帮助开发者从低版本升级到Spring Boot 2.0 ⭐️
spring-boot-docs 指定java doc的内容及样式 ⭐️

3. Spring Boot与Spring其它project的对比

Spring的生态比较庞大,点击官网项目列表可以查看这些项目(主要项目甚至还都设计了一个logo ^_^)。一些初学者可能会有一些概念上的混淆,在此做一些简单的比较。

3.1 Spring Boot vs Spring Cloud

Spring Cloud是一个基于Spring Boot实现的一系列框架的有序集合,是一个关注全局的服务治理框架。

Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

下图是官网截取的,以帮助理解:

spring-cloud.png

3.2 Spring Boot vs Spring Framework

Spring Framework是一个轻量级、非侵入式、一站式、模块化的开发应用框架。Spring Boot基于Spring Framework开发,不能单独存在。

下图是官网截取的,以帮助理解:

spring-frame.png

3.3 Spring Boot vs Spring MVC

Spring MVC是Spring Framework中处理web请求的一个模块,是Spring Framework的一部分。层级是这样的:

Spring MVC >> Spring Framework >> Spring Boot

4 小结

本文从顶层向下观察整个Spring Boot的构成,旨在使读者对Spring Boot的各个功能有一个大致的了解。

其提供的功能中,笔者认为Auto-configuration最为精妙好用,其它特性虽好但很多公司也已经有替代的解决方;而自动配置机制却的推出却让人有一种拨云见月、眼前一亮的感觉。

后面的文章中,我们将仔细介绍Auto-configuration和在此之上的Staters。


文章作者: 沉迷思考的鱼
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沉迷思考的鱼 !
评论
 上一篇
Spring Boot Staters 详解 Spring Boot Staters 详解
Maven和Gradle为Java开发者解决了依赖管理的心头大患,已然成为事实上的依赖管理标准。但贪心的开发者还想更“懒”,有没有办法使依赖管理更简单、更快捷? 答案是肯定的,Spring Boot项目中引入了Starter的概念。
2018-11-29
下一篇 
Spring Boot Test (二、注解详解) Spring Boot Test (二、注解详解)
Spring为了避免的繁琐难懂的xml配置,引入大量annotation进行系统配置,确实减轻了配置工作量。由此,理解这些annotation变得尤为重要,一定程度上讲,对Spring Boot Test的使用,就是对其相关annotati
2018-11-20
  目录