Trace Id is missing
跳到主内容
人们在办公室使用自己的笔记本电脑工作的画面

什么是 Java Spring Boot?

Spring Boot 简介:用于开发 Web 应用和微服务的基于 Java 的热门工具。

一个人使用外部键盘和鼠标看着笔记本电脑屏幕的画面

什么是 Spring Boot?

Java Spring Boot 是一种开放源代码工具,可以更轻松地使用基于 Java 的框架来创建微服务和 Web 应用。对于任何 Spring Boot 的定义,对话必须从 Java 开始(Java 是应用开发中最热门且使用最广泛的开发语言和计算平台之一)。全球各地的开发人员的编码之旅均始于 Java。Java 灵活且易于使用,各种应用程序(从社交媒体、Web 和游戏应用,到网络和企业应用程序)的开发人员都喜欢使用它。

Java 和 Spring 框架

虽然 Java 可能比其他语言更易于使用和学习,但构建、调试和部署 Java 应用的复杂性已经上升到令人眼花缭乱的新高度。这是因为现代开发人员针对常见的现代技术(例如音乐流或移动现金支付应用程序)开发 Web 应用或移动应用时面临着指数级变量。开发人员在编写基本业务线应用时,现在需要管理多个库、插件、错误日志记录,还需处理库、与 Web 服务的集成以及多种语言(例如 C#、Java、HTML 等)。可以理解的是,对于能够简化 Java 应用开发、节省开发人员时间和金钱的任何工具,需求永难满足。

输入应用程序框架:大量预先编写的代码,开发人员可以根据需要使用并添加到自己的代码中。无论是开发移动应用和 Web 应用,还是使用桌面和 API,这些框架几乎都能够减轻开发人员任何需求的负担。框架提供可重用的代码和工具来帮助将软件开发项目的不同元素整合在一起,从而使应用的创建过程更快、更简单且更安全。

下面介绍 Spring 的来源:Spring 是开放源代码项目,可提供一种简化的创建 Java 应用的模块化方法。Spring 项目系列于 2003 年启动,以响应早期 Java 开发的复杂性,并提供对开发 Java 应用的支持。Spring 这个名称通常是指应用程序框架本身或整个项目组或模块。Java Spring Boot 是作为 Spring 框架的扩展构建的一个特定模块。

因此,在 Spring 框架、Spring Boot 和 Java 如何协同工作的背景后,Spring Boot 的定义为:简化并加速 Java 框架 Spring 内的 Web 应用和微服务开发。

有时,由于语言和/或平台是 Java,因此称为“Java Spring Boot”、“Java Spring 框架”或“Spring Boot 框架”。但是,由于还有其他适用于 Java 的第三方框架(如 Play 和 Hibernate),因此称为“Spring”和“Spring Boot”更准确。

如需了解 Java 基础知识的大致内容,请参阅文章 什么是 Java?

Spring 和 Spring Boot 之间有什么区别?

如前所述,Spring 是基于 Java 的开放源代码应用框架,其范围涵盖许多小型项目。其他热门 Spring 项目包括 Spring Data、Spring Cloud 和 Spring Security,这里仅举其中几个例子。要了解 Spring Boot 与Spring 之间的区别,重要的是要认识到,虽然核心功能可能存在差异,但它们都属于 Spring 系列。

要完全了解 Spring 和 Spring Boot 之间的区域,首先需要定义几个关键术语。

一个人正在使用笔记本电脑的画面。
一位女士看着平板电脑的画面

什么是微服务?

微服务 是软件开发体系结构的方法。微服务中的“微”是指以较小、可管理的片段或组件的形式交付代码,并且每个“服务”或核心功能都独立于其他服务进行创建和部署。独立组件通过称为协定的指定 API 文档协同工作并相互通信。这些微服务的小规模和相对隔离的特征具有许多优点。例如,由于这种类型的体系结构是分布式且松散耦合的,因此即使有一个组件发生故障,也不会导致整个应用中断。其他优点包括,提高生产力、简化维护任务、增强业务一致性,以及提升容错能力。

什么是依赖项注入?

依赖项注入 (DI) 是用于实现控制反转 (IoC) 的设计技术。在面向对象的编程(如 Java)中,依赖于其他对象的对象称为依赖项。通常,接收对象或依赖对象称为客户端,客户端依赖的对象称为服务。因此,依赖项注入会将服务传递给客户端,或者使用称为注入程序的代码注入依赖项。DI 无需客户端来指定使用哪些服务,因为注入程序会为客户端完成这项工作。

一个人正在看着笔记本电脑和显示器的画面
一位戴着 VR 耳机的女人

什么是约定优于配置?

约定优于配置(有时称为按约定编码)是应用程序框架中使用的一个概念,用于减少开发人员必须做出的决策数。此概念遵循“不要自我重复”原则以避免编写冗余代码。按约定编码力求保持灵活性,同时允许开发人员仅针对自己创建的应用的非常规方面编写代码。当应用的所需行为与建立的约定匹配时,应用将默认运行,而无需编写配置文件。仅当所需行为偏离约定时,开发人员才需要显式写入配置文件。

Spring 框架与Spring Boot

由于 Spring Boot 是基于 Spring 框架的优点构建的,因此这实际上并不是 Spring 与 Spring Boot 优点的非此即彼的问题,而是两者兼享的问题。Spring 和 Spring Boot 并非相对关系,而是相辅相成:
组织范围的支持计划
Spring Spring Boot
含义是什么?

基于 Java 的开放源代码 Web 应用程序框架。

基于 Spring 框架构建的扩展或模块。

有何用途?

使用工具和预构建的代码库提供灵活、完全可配置的环境,来创建定制的、松散耦合的 Web 应用。

提供创建独立 Spring 应用程序的功能,这些应用程序可以立即运行,无需注释、XML 配置或编写大量额外的代码。

何时使用?

希望实现以下目标时可使用 Spring:

  • 灵活性。
  • 非强制约束方法。*
  • 从自定义代码中删除依赖项。
  • 实现非常独特的配置。
  • 开发企业应用程序。

希望实现以下目标时可使用 Spring Boot:

  • 易于使用。
  • 强制约束方法。*
  • 快速运行优质应用并缩短开发时间。
  • 避免编写样板代码或配置 XML。
  • 开发 REST API。
主要功能是什么?

依赖项注入

自动配置

是否具有嵌入式服务器?

否。在 Spring 中,需要显式设置服务器。

是,Spring Boot 随内置的 HTTP 服务器(如 Tomcat 和 Jetty)一起提供。

如何配置?

Spring 框架提供灵活性,但必须手动构建其配置。

Spring Boot 根据默认“约定优于配置”原则自动配置 Spring 和其他第三方框架。

是否需要知道如何使用 XML?

在 Spring 中,必须了解 XML 配置。

Spring Boot 不需要 XML 配置。

是否存在用于开发/测试应用的 CLI 工具?

Spring 框架本身不提供用于开发或测试应用的 CLI 工具。

作为 Spring 模块,Spring Boot 具有用于开发和测试基于 Spring 的应用的 CLI 工具。

是否通过强制约束或非强制约束方法运行?

非强制约束

强制约束*

*强制约束与非强制约束框架方法

虽然“强制约束”一词听起来有点负面,但 Spring Boot 的强制约束方法和 Spring 的非强制约束框架都有各自的优点。

强制约束方法

强制约束方法采用单向立场,比所有其他方法都更简单。根据设计,软件会限制设计工具,促使工具按规定的方式执行操作。

此方法提供了一个精心准备的路径,即适用于大多数情况下的大多数人的最佳做法。应用的编写严格遵守这些最佳做法和广泛约定。强制约束方法使协作和获取编码项目的帮助更加容易,其他具有该框架经验的开发人员将能立即熟悉新应用并可以直接使用。

非强制约束方法

如果所有解决方案都需要大致相同的工作量或复杂性,则采用非强制约束方法。此方法采用没有所谓唯一正确的方法的立场来获取问题的解决方案。相反,此方法提供的灵活工具可用于通过多种方式解决问题。非强制约束框架具有在开发方面提供大量灵活性的优点,并且让开发人员能够掌控更多控制权。如此大的灵活性的主要缺点是,开发人员需要做出更多决策,并且最终可能会因为此框架过于开放且属于非强制约束而不得不编写更多代码。

Spring Boot 的功能和优势

最后,令人兴奋的部分是 Java Spring Boot 在 Spring 框架之外提供的核心功能。Spring Boot 提供更简单、更快的设置、配置和运行应用的路径。它消除了安装大多数基于 Spring 的应用所需的大量配置。开发人员无需学习基础 Spring 框架即可直接加入并使用 Spring Boot。

坐在椅子上并看着桌面屏幕的人

下面介绍 Spring Boot 功能如何帮助简化 Java 编程任务。Spring Boot 的一些主要功能包括:

Spring Boot 的优势

Spring Boot:

Java Spring Boot 教程

如果你已经熟悉使用 Spring 框架构建应用,你可能会发现使用本节中提供的教程、项目入门和文档来学习 Spring Boot 非常简单。但如果你急需使用 Spring Boot 但还不了解该框架,不妨看看下面一些好消息。在学习 Spring 框架之前,可以先学习并开始使用 Spring Boot,因为你将在学习过程中掌握许多框架基础知识。虽然这不会教你有关该框架的所有知识,但如果你决定稍后学习,这会是一个很好的起点。

除了使应用开发起来更快、更高效之外,学习 Spring Boot 的另一个优点是,还能让你使用其他 Spring 功能,例如 Spring Data、Project Reactor 和 Spring Security。

一个人使用耳机对着笔记本电脑讲话的人
也就是说,如果你先了解了依赖项注入和控制反转在 Spring 框架中的工作原理的基本概念,那么完成第一个 Spring Boot 教程会更轻松。下面是一个大致概述:

依赖项注入

  • 基于 XML,即 <beans/> 和 <namespace:*/>。
  • 基于批注,即 @Component、@Autowired、@Inject。
  • 基于 Java,即 @Configuration 类、@Bean 方法。

控制反转 (IoC)

  • ApplicationContext:用作 Spring IoC 容器的根接口。
  • BeanFactory:用于访问 Spring 容器的接口。
  • Beans:由 ApplicationContext 实例化、汇编和管理的对象。

Java Spring Boot 初学者教程

掌握基础知识后,如果你希望大规模构建和部署 Spring Boot 应用,请考虑查看完 Microsoft 和 VMware 提供的全托管的 Azure Spring Cloud 服务。或者,立即开始学习如何使用 TLS/SSL 证书保护 Spring Boot 应用这本教程。

创建并帮助保护 Java 应用

通过 Spring Initializr 使用适用于 Microsoft Entra ID(前 Azure Active Directory) 的 Spring Boot Starter 创建 Java 应用。

将第一个应用部署到 Azure Spring Cloud

了解如何创建、预配和监视使用 Spring Initializr 生成的简单 Spring Boot 应用。

构建简单的 Spring Boot 微服务

构建并部署简单的微服务,然后学习向该微服务添加 Spring Cloud 技术。

更多 Spring Boot Starter

将存储空间、安全性、身份验证和关键保管库功能添加到 Spring Boot 应用。

常见问题解答

  • Spring Boot 是 Spring 提供的开放源代码、基于微服务的 Java Web 框架,对于开发 Web 应用和微服务的软件工程师特别有用。

  • “Java 中的 Spring Boot”是 Java Spring Boot 的另一种称呼,这两个词可以交换使用。Java 是语言和平台,Spring 是基于 Java 的应用程序框架,Spring Boot 是 Spring 框架的扩展并具有一些额外的优点。

  • Spring Boot 具有一般 Spring 框架的功能,但你无需了解 Spring 也可使用 Spring Boot。由于 Spring Boot 属性是自动配置的,并且强制约束方法删除了与 Spring 应用开发和部署相关的大部分样板代码和配置,因此开发人员启动并运行应用的时间可以显著缩短。

  • 是,如上所述,Spring Boot 对于软件开发体系结构的微服务方法特别有用。微服务是构建小型自治团队的常用方法,这些团队可以独立—工作,并且本质上微服务只能在后端工作。

  • 减少开发时间、提高生产力以及易于使用,这些只是开发 Spring Boot 应用的几个优点。

  • Spring 网站以及 Microsoft Azure 提供的 Spring Boot Starter 和文档提供了许多教程、快速入门和文档。如果要立即开始部​​署 Spring Boot 应用,请观看网络研讨会:大规模将 Spring Boot 应用程序加速部署到云

准备就绪后,即可开始设置 Azure 免费帐户