What Is Spring Boot?

Alan Zeichick | Senior Writer | October 29, 2024

编写软件如同在常用文字处理器中打开新文档:第一步该做什么?如何处理创建复杂应用所需的繁琐模板代码,同时避免遗漏关键配置或出错?应用框架正是为此而生,为各类应用提供结构支撑。开发团队选定应用框架后,软件创建工作才真正进入实质阶段。虽然并非填空式模板那么简单,但应用框架的脚手架机制能为各类项目处理基础工作,从简单的微服务或 Web 应用,到传统的客户端/服务器应用皆可覆盖。

对 Java 开发者而言,Spring 是最受欢迎的应用框架之一,其灵活性和多功能性令人惊叹。无论是创建基础服务还是开发关键业务系统,Spring 几乎能满足所有需求。然而,这种多功能性既是 Spring 的最大优势,也是其最大弱点:往往过于复杂且提供过多选择。Spring Boot 的出现正是为解决这一问题。作为 Spring 的扩展,Spring Boot 通过预置依赖项管理和配置选项,显著简化了使用流程。

简而言之:若考虑使用 Spring,您完全可以——也应当——选择 Spring Boot 替代。

什么是 Spring Boot for Java?

Spring Boot 是一个基于 Java 的开源框架,用于创建基于 Spring 的应用程序。Spring 框架诞生于 21 世纪初,迅速成为企业级应用最受欢迎的 Java 框架之一。Spring Boot 作为后续推出的简易框架,继承了 Spring 全部工具与技术,旨在实现快速应用开发。

Java 和 Spring 框架

对于 Java 开发者而言,Spring 拥有令人印象深刻的核心技术组合,涵盖依赖项注入、事件管理、国际化、数据绑定、类型转换及面向方面程序设计等领域。无论您需要什么功能,Spring都能提供:测试、模拟、数据对象、模型视图控制器网络应用、远程调用、任务调度——功能列表不胜枚举。开发者可根据需求选择使用部分或全部功能,这完全取决于软件开发团队和架构师的决策。

Spring Framework 是采用 Apache 2.0 许可证的开源软件。

Spring 项目包含众多子项目,聚焦于云应用、安全防护、Web服务发布与消费、凭证管理、数据访问、事件管理,甚至涵盖人工智能。这种灵活性可能导致复杂性:构建复杂的 Spring 应用可能使开发团队陷入选项、决策和配置的迷宫——其中部分配置一旦手动设置,在开始编码后便难以更改

此时 Spring Boot 应运而生。

Spring 与 Spring Boot

  • Spring Boot 是 Spring 下的子项目之一,同样采用 Apache 2.0 开源许可证。
  • 令人惊讶的是,Spring Boot 的代码库规模竟超过了 Spring Framework。这是因为 Spring Boot 作为 Spring 的扩展,被设计为具备智能自配置能力——业内称之为“主见型”框架。
  • 告知 Spring Boot 要构建什么时,它会自动选择加载哪些模块和第三方库。
  • 重要说明:此处的“智能”并非指人工智能。Spring Boot 的选择基于算法机制。
  • Spring Boot 框架本身的额外负担不会体现在最终应用中。实际上,Spring Boot 几乎只选择必需组件。
  • 换言之,Spring Boot 虽有自己的主见,但其主见极具价值。
  • 例如,您的应用程序是否需要嵌入式 Web 服务器?使用 Spring 应用时,您需自行决定是否需要,若需要则需手动选择嵌入的 Web 服务器并完成所有配置(包括安全设置)
  • 使用 Spring Boot 时,它会自动为需要 Web 服务器的应用安装并配置服务器。

主要差异

Spring 与 Spring Boot 的核心差异在于复杂度与易用性的权衡。

Spring 具备近乎无限的可配置性,但需要投入大量时间进行选择:筛选要安装的模块和第三方库,再配置各项功能特性。这一切都必须在真正开始编码前完成。

使用 Spring Boot,您更快上手,因为框架会为您完成大量安装和配置工作。虽然会牺牲部分定制性,但坦率地说,这种牺牲大多无关紧要。在绝大多数情况下,Spring Boot 更适合Web开发和微服务项目;仅在特殊场景或超大型项目中,您可能需要选择 Spring。

关键要点

  • Spring 是一个极其强大且复杂的框架,用于构建企业级 Java 应用开发。如同配备了所有螺丝刀、扳手、钻头和套筒的工具箱,它应有尽有,但选择之多可能令人无从下手。
  • 不妨将 Spring Boot 视为更易用的 Spring 版本——就像有人为您的特定任务精心打包了一个小型工具箱,只包含必需工具。
  • Spring 和 Spring Boot 均可用于构建 Java 模块化应用。
  • Spring Boot 在构建微服务和 Web 应用等小型项目时表现尤为出色,其简化的配置和智能默认设置能让团队快速启动项目。
  • 若需开发大型复杂应用,则更推荐采用灵活度更高的 Spring Framework。

Spring Boot详解

Spring Boot 是用于构建企业级Java应用的开源框架。Spring Boot 旨在帮助开发团队快速入门,无需面对完整 Spring 中繁琐的配置选择即可构建独立运行的 Spring 应用。

Spring 项目的目标是通过“有主见”的方式(即运用算法选择启用的 Spring 模块与特性、安装第三方库,并自动完成配置)创造更快速、更高效的开发体验。它还为 Java 项目增添了大量非代码功能,例如嵌入式 Web 服务器、安全系统、指标监控和数据分析。

当前版本的 Spring Boot(撰写本文时为 3.3.4 版)要求至少使用 Java 17 及 Spring Framework 6.1.13 或更高版本。Spring Boot 可与 Maven 3.6.3 以及 Gradle 7.x 和 8.x 构建工具配合使用。对于嵌入式 servlet,Spring Boot 可与 Tomcat、Jetty 和 Undertow 或任何与 servlet 5.0+ 兼容的容器一起使用。您可能还想要使用 GitHub。

Spring Boot 的优势在于:无需面对 Spring 的复杂性,即可充分利用 Spring 应用框架的丰富功能。。开发者可在兼容 Java 17 及以上版本的任意 Java 虚拟机上运行项目,这意味着无需单独配置 Web 服务器或定义 WAR(Web 应用程序归档)文件。

Spring Boot 采用 application.properties 替代 XML 配置来设置 Java 应用,特别适合使用 Oracle 数据库或 MySQL 的数据库驱动型应用。事实上,若应用使用 MySQL,Spring Boot 可自动为您配置内存数据库Spring Data JPA (Java Persistence API) 可用于处理各种数据访问技术。

如想深入了解该体系结构,请查看基于 Spring Boot 的应用程序示例。

Spring Boot 如何运作?

与众多 Java 应用框架及插件类似,Spring Boot 通过依赖注入 (DI) 和控制反转 (IoC) 为 Java 程序添加功能。

DI 使外部框架(此处为 Spring Boot)能为企业应用提供对象与功能,开发者无需自行构建。开发者只需根据具体情况了解或定义这些对象与函数的接口。

IoC 则指程序的控制流由外部来源提供;在Spring Boot中,开发者负责处理程序逻辑,而应用框架则提供事件循环和消息分发机制。Spring 中的特殊 IoC 容器能高效处理对象与函数的依赖注入,最大限度减轻开发者负担。

Spring 和 Spring Boot 采用 Java 注解机制。该机制通过在代码中嵌入以 @ 符号开头的非编译性标签,提供可用于添加功能的元数据。

开发者通过在新项目的 Maven pom.xml 或 Gradle build.gradle 文件中添加 Spring 依赖项和 Spring Boot Starter 依赖项来加载 Spring Boot。随后开发者在代码中添加相应 Spring Boot 注解,例如使用 @RestController 构建 Web 服务的 REST 控制器。Spring Boot 提供大量极大简化应用设计与编码的功能,例如集成三种J SON 映射库—通过 Jackson 实现代码序列化与反序列化。Spring Security 功能对构建任何使用 HTTP 或表单的应用程序(坦白说,任何 Web 应用程序)都至关重要。

Spring Boot 框架构建了一个四层架构,将 HTTP 请求与 JSON 数据传输分离于业务逻辑层,进而将逻辑层与数据对象表示层分离于外部数据库的实际表示层。此架构可按原样使用,非常适合构建微服务,也可以映射到模型视图控制器设计模式,这可能更适合 Web 应用。

添加所有依赖项并编写程序逻辑后,标准 Maven 和 Gradle 运行命令即可启动应用。Spring Boot 将确保项目所需的所有 Spring Framework 组件均被正确安装配置。若需创建自包含可执行文件,Spring Boot 支持直接创建嵌套 JAR 文件,然后可以分发该文件以在任何标准 JVM(Java 17 或更高版本)或本机映像平台(例如 GraalVM)中运行。

Spring Boot 的优势

相较于直接使用 Spring Framework,Spring Boot 为企业级 Java 开发者提供了多重优势。通常而言,当项目需求可由 Spring 或 Spring Boot 满足时,选择 Spring Boot 能借助其简化的配置流程和更高的生产力。具体优势包括:

  • 加快开发速度。 借助 Spring Boot,开发团队能快速投入工作Spring Boot 的“主见型”算法能自动检测、加载并配置项目所需的模块、功能及第三方库。相比之下,使用 Spring,开发者必须手动选择所需组件。
  • 简化配置。 使用 Java、C++ 和 C# 等语言的开发者深知,配置复杂应用的所有元素既耗时又易出错。Spring Boot 在模块与第三方库的自动配置方面表现卓越,大幅节省了开发工作量。更值得一提的是,若开发过程中使用的模块或库发生变更,Spring Boot 将自动适应并更改配置
  • 适用于微服务的内置功能。 Spring Boot 可用于构建各类企业级Java应用,无论是反应式、事件驱动、批处理、无服务器、客户端/服务器还是 Web 应用。然而,其在微服务构建领域尤为强大,内置了服务发现、负载均衡、分布式执行追踪及实时消息流等模式。同样重要的是,Spring Boot 应用启动和关闭都很快,这对微服务的可扩展性至关重要。
  • 依赖性管理。 依赖性是指应用程序代码的一部分依赖于库、模块、插件、微服务和 API 的存在和正常运行。Spring Boot 内置依赖注入 (dependency injection,DI) 支持,可轻松将外部定义的对象和函数集成到应用中。这使开发者能专注于程序逻辑,无需担忧外部资源的技术细节。
  • 生产就绪功能。 目标并非编写软件,而是在于运行软件。企业级 Java 应用的打包分发往往因缺乏通用标准而复杂 — Spring Framework 的应用同样面临此问题。Spring Boot 通过让团队选择可执行的 JAR 文件或可部署的 WAR 文件来解决这个问题。应用既可直接部署至容器,也可作为 Windows 或 Unix/Linux 系统服务运行。
  • 无缝集成。 企业级Java应用几乎必然需要与其他应用交互,例如数据库、ERP 系统、云应用、传统客户端/服务器应用等。Spring Boot 包括众多现成的集成方案,几乎所有开源项目或主流软件供应商都提供集成工具与指导。例如,Oracle 提供并支持 JDBC、UCP 和 Oracle Backend for Spring Boot and Microservices ,以及一组用于各种 Oracle 技术的 Spring Boot Starters。

Spring Boot 功能

Spring Boot 历经数十年演进,以更好地满足企业 Java 开发者的需求。尽管功能数量看似庞大,但 Spring Boot 的核心使命在于简化开发。通过智能选择项目所需的模块、功能和库,开发者能更专注于程序逻辑,减少对基础设施、管道和支架的关注。

以下是 Spring Boot 帮助简化开发流程的几项功能。

  • 自动配置。 Spring Boot 采用主观性方法确定项目所需的模块和外部库,并自动完成配置。这不仅省去了开发者筛选模块库的时间,更免去了为应用上下文配置参数的繁琐操作 — 该过程往往耗时且易出错。
  • 独立可执行 JAR。 Spring Boot 的核心优势在于能生成独立可执行的 JAR(Java 归档)文件,可直接分发至运行环境。JAR 包含所有 Java 类文件、元数据以及运行独立应用所需的映像等资源。
  • 嵌入式 Web 服务器。 若企业级 Java 应用需要 HTTP 服务器,Spring Boot 将自动安装并配置服务器,同时提供强大的默认安全选项。可用服务器包括 Tomcat、Jetty 和 Undertow。
  • Spring Boot Starters。 企业应用通常涉及大量库与依赖项,涵盖Web服务器、分析工具、调试器、设计模式、持久化、通信、模拟测试、负载均衡等。Spring Boot Starter 通过将所有依赖项打包为单一配置文件,简化配置流程、减少代码量并确保无遗漏。堪称一站式解决方案。
  • 外部化配置。 Spring Boot 使应用程序代码能在不同环境中轻松运行。外部化配置允许您针对特定运行时环境定制数十项属性(包括命令行参数、属性文件和环境变量),并将它们封装在单个文件中。该文件在运行时加载,并通过 @ 注解进行访问。
  • Spring Boot 开发工具。 开发企业级 Java 应用的开发者可使用其偏好的工具链,包括IDE、DevOps工具、源代码管理等。此外,Spring Boot 还提供可根据开发者偏好选择是否加载的辅助工具,用于支持错误管理、日志记录、远程执行及类路径管理。
  • Spring Boot Actuator。 Spring Boot Actuator 允许您定义运行时监控端点,以确定应用程序的运行状况。这些端点可通过 HTTP 或 JMX(Java 管理扩展)启用、禁用及公开;通常您可使用首选的应用程序管理工具监控这些端点,以检查应用程序是否运行正常,或是否存在内存不足、卡顿、运行缓慢、抛出异常等异常状况。
  • 简化依赖项管理。 Spring Boot 框架最突出的优势在于能大幅减少开发者手动配置依赖项的工作量。Spring Boot 简化依赖项管理的机制可自动配置所需模块与库,通过 Spring Boot Starters 打包库文件,并使用独立可执行JAR包封装应用程序。
  • 生产就绪的功能。 当应用程序准备部署时,Spring Boot 提供多项辅助功能。这些包括:通过 Spring Boot Starters 打包所有配置、使用独立可执行 JAR 分发应用、借助Spring Boot Actuator 实现运行时运行状况监测。
为何 Spring Boot 如此受欢迎?(见下文图表说明)

为何 Spring Boot 如此受欢迎?

其优势贯穿应用从开发到部署的全生命周期。

热门 Spring Boot 功能

开发:

  • 自动配置
  • Spring Boot 开发工具
  • 简化依赖项管理
  • 嵌入式 Web 服务器

轻松部署:

  • 独立可执行 JARS
  • Spring Boot starters
  • 外部化配置
  • Spring Boot Actuator
  • 生产就绪功能
这些优势使 Spring Boot 成为 Java 开发者的首选。

Spring Boot 架构

Spring Boot 可用于编写任何规模的企业级 Java 应用程序,无论是精简的微服务、复杂的本地部署关键业务应用,还是现代云应用。典型的 Spring Boot 应用程序包含四个可根据应用需求定制的层级。例如,简单微服务可省略数据库或持久化层。

自底而上,四层架构如下:

  • 数据库层。 实际驱动应用程序并用于 CRUD 操作的数据库(或多个数据库)。Spring Boot 几乎支持任何可扩展数据库。
  • 持久性层。 持久性层为实际数据库层提供对象关系抽象。应用逻辑通过与业务对象交互来处理持久性层;持久性层的代码将这些对象转换为为关系行/列,并将 CRUD 操作传递到数据库层。
  • 业务层。 开发团队在这一层解决组织面临的问题。业务层包括程序流以及事件处理指令。它通过展示层与用户及外部应用程序通信,并通过持久性层与数据交互。
  • 展示层。 Spring Boot 应用程序的展示层通过 HTTP 和 JSON 与外部世界进行对话。在此层对传入的请求进行身份验证,并解包 JSON 数据。服务请求随后传递至业务层处理。与应用程序的外部接口称为“视图”。

配置 Spring Boot

准备好尝试 Spring Boot 了吗?其配置过程简单易行 — 这或许正是众多开发团队采用 Spring Boot、学生们学习这个流行应用框架的原因。初学者可查阅开源项目官方文档 Developing Your First Spring Boot Application,以下为步骤概要:

  1. 确保运行 Java 17 或更高版本。
  2. 配置 Maven 或 Gradle 并定义 Maven pom.xml 或 Gradle build.gradle 文件以引入 Spring Boot 应用程序框架。
  3. 为 Spring Boot Starter 添加类路径依赖项,该依赖项管理项目特有的依赖项。
  4. 编写代码(无论是简单的“Hello World”还是关键业务应用),通过正确注解调用 Spring Boot 功能。
  5. 使用 Maven 或 Gradle 在本地运行应用,并确认其运行效果符合预期。
  6. 如有需要,可将应用程序打包为独立可执行 JAR 文件以便分发。

如需试用该服务,请查看 CloudBank,该应用集成了多数已部署的服务。

将 Oracle 技术与 Spring Boot 结合使用

Spring Boot 的数据库层与广泛的云和内部部署数据库兼容;其中 Oracle 数据库和 MySQL 是两大主流选择。Oracle 开发团队通过向开源库回馈代码,并整合 Oracle 众多框架与库,致力于支持 Spring Boot。您还可以在 Oracle Cloud Marketplace 中找到 Oracle Database 和 OCI Services 支持的 Spring 启动器。

Oracle Backend for Microservices and AI 是 2024 年 6 月推出的新平台,提供基于 Oracle 数据库及其他基础设施组件的“后端即服务”,支持多云环境运行,助力开发者在 Spring Boot 等框架中构建部署微服务。该平台简化了微服务平台的构建、测试和运维流程,并内置 AI 沙箱(开发者预览版),可利用 Oracle Database 23ai 来快速迭代和实验 RAG 和代理技术。AI 沙箱可以生成 Spring AI Microservice 代码,该代码可以在 Oracle Backend for Microservices and AI 上管理和部署。该平台提供命令行界面、Visual Studio Code (VS Code) 插件、IntelliJ 插件、服务发现及事件管理功能。

简而言之,Spring Boot 是明智的开源选择。它能让开发团队比单独使用 Spring Framework 更快地编写复杂业务应用。由于 Spring Boot 可智能地安装功能、功能及外部库并自动配置,开发者可专注解决业务难题 — 这才是应用的真正价值所在。

人工智能模型可实时检测欺诈行为,帮助医疗保健研究人员发现洞察,分析客户评论和社交媒体情绪等。共同点在于?智能开发,高效利用数据。深入了解 10 个真实 AI 用例。

Spring Boot 常见问题解答

什么是 Spring Boot,为何使用它?

Spring Boot 是一个应用程序框架,它使 Java 开发者能够利用 Spring Framework 强大的四层架构,但使用起来要简单得多这些优势包括提高开发者的工作效率、缩短部署时间,以及因 Spring Boot 的自动配置功能而减少出错的可能性。

Spring Boot 是后端框架吗?

Spring Boot 是用于构建企业级 Java 应用程序的框架。它适用于云端和本地部署,可创建 Web 应用、微服务及客户端/服务器软件。Spring Boot 同时涵盖前端(展示层与业务逻辑)和后端(持久化抽象与数据库连接)功能。

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。