Alan Zeichick | Senior Writer | October 29, 2024
编写软件如同在常用文字处理器中打开新文档:第一步该做什么?如何处理创建复杂应用所需的繁琐模板代码,同时避免遗漏关键配置或出错?应用框架正是为此而生,为各类应用提供结构支撑。开发团队选定应用框架后,软件创建工作才真正进入实质阶段。虽然并非填空式模板那么简单,但应用框架的脚手架机制能为各类项目处理基础工作,从简单的微服务或 Web 应用,到传统的客户端/服务器应用皆可覆盖。
对 Java 开发者而言,Spring 是最受欢迎的应用框架之一,其灵活性和多功能性令人惊叹。无论是创建基础服务还是开发关键业务系统,Spring 几乎能满足所有需求。然而,这种多功能性既是 Spring 的最大优势,也是其最大弱点:往往过于复杂且提供过多选择。Spring Boot 的出现正是为解决这一问题。作为 Spring 的扩展,Spring Boot 通过预置依赖项管理和配置选项,显著简化了使用流程。
简而言之:若考虑使用 Spring,您完全可以——也应当——选择 Spring Boot 替代。
Spring Boot 是一个基于 Java 的开源框架,用于创建基于 Spring 的应用程序。Spring 框架诞生于 21 世纪初,迅速成为企业级应用最受欢迎的 Java 框架之一。Spring Boot 作为后续推出的简易框架,继承了 Spring 全部工具与技术,旨在实现快速应用开发。
对于 Java 开发者而言,Spring 拥有令人印象深刻的核心技术组合,涵盖依赖项注入、事件管理、国际化、数据绑定、类型转换及面向方面程序设计等领域。无论您需要什么功能,Spring都能提供:测试、模拟、数据对象、模型视图控制器网络应用、远程调用、任务调度——功能列表不胜枚举。开发者可根据需求选择使用部分或全部功能,这完全取决于软件开发团队和架构师的决策。
Spring Framework 是采用 Apache 2.0 许可证的开源软件。
Spring 项目包含众多子项目,聚焦于云应用、安全防护、Web服务发布与消费、凭证管理、数据访问、事件管理,甚至涵盖人工智能。这种灵活性可能导致复杂性:构建复杂的 Spring 应用可能使开发团队陷入选项、决策和配置的迷宫——其中部分配置一旦手动设置,在开始编码后便难以更改
此时 Spring Boot 应运而生。
Spring 与 Spring Boot 的核心差异在于复杂度与易用性的权衡。
Spring 具备近乎无限的可配置性,但需要投入大量时间进行选择:筛选要安装的模块和第三方库,再配置各项功能特性。这一切都必须在真正开始编码前完成。
使用 Spring Boot,您更快上手,因为框架会为您完成大量安装和配置工作。虽然会牺牲部分定制性,但坦率地说,这种牺牲大多无关紧要。在绝大多数情况下,Spring Boot 更适合Web开发和微服务项目;仅在特殊场景或超大型项目中,您可能需要选择 Spring。
关键要点
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 的应用程序示例。
与众多 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 应用框架为企业 Java 开发者提供了极大便利,无论项目规模大小。其核心价值在于简化 Java 项目的基础架构搭建过程,通过安装和配置海量模块和第三方库,有效化解因应用架构和场景差异而产生的极大复杂性。例如,若应用需要 Web 服务器或用于构建微服务的 REST 端点,Spring 均能提供支持。
生产力提升与执行效率相辅相成。服务和库的配置往往充满挑战,而对其进行优化以最大限度提升运行速度并降低内存消耗更是难上加难。Spring(尤其是 Spring Boot)经过多年调优,能实现应用快速启动和关闭——这在微服务环境中至关重要。
无论应用类型如何,Spring Boot 都提供灵活的四层架构,实现功能分离与抽象。例如,数据库层负责与外部数据源(如对象数据库或关系型数据库)通信。持久层负责对象关系转换,并将 CRUD(创建、读取、更新、删除)请求发送到数据库层。业务层处理程序流程,而展示层则管理 HTTP 请求与 JSON 转换。所有这些都由 Spring Boot 自动构建:开发团队实际上只需编写业务逻辑,应用程序即告完成。
当然这有些过度简化,但核心思想大致就是这样。
Spring广受欢迎的另一原因是其普遍性。没错,Spring 遍布各处,Java 生态圈几乎所有参与者都通过库、插件和技术文档支持 Spring 及 Spring Boot。既有社区论坛、培训视频、线上线下会议,甚至还有认证体系。因此,使用 Spring 和 Spring Boot 不仅是稳妥的技术决策,对企业而言更是明智之举——因为人才储备充足。
相较于直接使用 Spring Framework,Spring Boot 为企业级 Java 开发者提供了多重优势。通常而言,当项目需求可由 Spring 或 Spring Boot 满足时,选择 Spring Boot 能借助其简化的配置流程和更高的生产力。具体优势包括:
Spring Boot 历经数十年演进,以更好地满足企业 Java 开发者的需求。尽管功能数量看似庞大,但 Spring Boot 的核心使命在于简化开发。通过智能选择项目所需的模块、功能和库,开发者能更专注于程序逻辑,减少对基础设施、管道和支架的关注。
以下是 Spring Boot 帮助简化开发流程的几项功能。
为何 Spring Boot 如此受欢迎?
其优势贯穿应用从开发到部署的全生命周期。
热门 Spring Boot 功能
开发:
轻松部署:
Spring Boot 可用于编写任何规模的企业级 Java 应用程序,无论是精简的微服务、复杂的本地部署关键业务应用,还是现代云应用。典型的 Spring Boot 应用程序包含四个可根据应用需求定制的层级。例如,简单微服务可省略数据库或持久化层。
自底而上,四层架构如下:
准备好尝试 Spring Boot 了吗?其配置过程简单易行 — 这或许正是众多开发团队采用 Spring Boot、学生们学习这个流行应用框架的原因。初学者可查阅开源项目官方文档 Developing Your First Spring Boot Application,以下为步骤概要:
如需试用该服务,请查看 CloudBank,该应用集成了多数已部署的服务。
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 是一个应用程序框架,它使 Java 开发者能够利用 Spring Framework 强大的四层架构,但使用起来要简单得多这些优势包括提高开发者的工作效率、缩短部署时间,以及因 Spring Boot 的自动配置功能而减少出错的可能性。
Spring Boot 是后端框架吗?
Spring Boot 是用于构建企业级 Java 应用程序的框架。它适用于云端和本地部署,可创建 Web 应用、微服务及客户端/服务器软件。Spring Boot 同时涵盖前端(展示层与业务逻辑)和后端(持久化抽象与数据库连接)功能。
注:为免疑义,本网页所用以下术语专指以下含义: