什么是 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 之间的区域,首先需要定义几个关键术语。
什么是微服务?
什么是依赖项注入?
依赖项注入 (DI) 是用于实现控制反转 (IoC) 的设计技术。在面向对象的编程(如 Java)中,依赖于其他对象的对象称为依赖项。通常,接收对象或依赖对象称为客户端,客户端依赖的对象称为服务。因此,依赖项注入会将服务传递给客户端,或者使用称为注入程序的代码注入依赖项。DI 无需客户端来指定使用哪些服务,因为注入程序会为客户端完成这项工作。
什么是约定优于配置?
约定优于配置(有时称为按约定编码)是应用程序框架中使用的一个概念,用于减少开发人员必须做出的决策数。此概念遵循“不要自我重复”原则以避免编写冗余代码。按约定编码力求保持灵活性,同时允许开发人员仅针对自己创建的应用的非常规方面编写代码。当应用的所需行为与建立的约定匹配时,应用将默认运行,而无需编写配置文件。仅当所需行为偏离约定时,开发人员才需要显式写入配置文件。
Spring 框架与Spring Boot
Spring | Spring Boot | |
---|---|---|
含义是什么? | 基于 Java 的开放源代码 Web 应用程序框架。 | 基于 Spring 框架构建的扩展或模块。 |
有何用途? | 使用工具和预构建的代码库提供灵活、完全可配置的环境,来创建定制的、松散耦合的 Web 应用。 | 提供创建独立 Spring 应用程序的功能,这些应用程序可以立即运行,无需注释、XML 配置或编写大量额外的代码。 |
何时使用? | 希望实现以下目标时可使用 Spring:
| 希望实现以下目标时可使用 Spring Boot:
|
主要功能是什么? | 依赖项注入 | 自动配置 |
是否具有嵌入式服务器? | 否。在 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 有助于创建应用,使应用无需绑定到特定平台,并且可以在设备上本地运行,而无需 Internet 连接或其他已安装的服务正常运行。
-
嵌入式服务器:Spring Boot 支持直接嵌入 Tomcat、Jetty 或 Undertow 等服务器。
-
强制约束方法:Spring Boot 通过提供强制约束的入门依赖项来简化生成配置。
-
自动配置:Spring Boot 会尽可能自动配置 Spring 和其他第三方库。
-
生产就绪功能:Spring Boot 提供生产就绪功能,例如指标、运行状况检查和外部化配置。
Spring Boot 的优势
Spring Boot:
-
缩短开发时间并提高生产力:Spring Boot 让使用 Java 开发基于 Spring 的应用更加容易。它对 Spring 框架的强制约束方法减少了制定决策和执行重复性任务所花费的时间,从而腾出时间专注于创建和测试应用。
-
减少编写样板代码、批注和 XML 配置的需求:开发人员无需生成代码或配置 XML,甚至无需了解 Spring 框架(如果没有必要)。
-
集成 Spring 项目系列中的应用:Spring Boot 应用可与 Spring 框架生态系统中的其他项目(例如 Spring Data、Spring Cloud、Spring Security)以及其他受信任的云服务(例如 Microsoft Azure Spring Cloud)无缝集成。
-
提供开发/测试工具:借助 Spring Boot 的命令行接口 (CLI) 工具和嵌入式 HTTP 服务器,创建开发/测试基于 Spring 的应用的环境变得非常简单。
-
提供用于简化开发的插件和工具:Spring Boot 提供能够与内存数据库搭配使用的插件,以及其他热门的构建自动化工具,例如 Apache Maven。
Java Spring Boot 教程
如果你已经熟悉使用 Spring 框架构建应用,你可能会发现使用本节中提供的教程、项目入门和文档来学习 Spring Boot 非常简单。但如果你急需使用 Spring Boot 但还不了解该框架,不妨看看下面一些好消息。在学习 Spring 框架之前,可以先学习并开始使用 Spring Boot,因为你将在学习过程中掌握许多框架基础知识。虽然这不会教你有关该框架的所有知识,但如果你决定稍后学习,这会是一个很好的起点。
除了使应用开发起来更快、更高效之外,学习 Spring Boot 的另一个优点是,还能让你使用其他 Spring 功能,例如 Spring Data、Project Reactor 和 Spring Security。
依赖项注入
- 基于 XML,即 <beans/> 和 <namespace:*/>。
- 基于批注,即 @Component、@Autowired、@Inject。
- 基于 Java,即 @Configuration 类、@Bean 方法。
控制反转 (IoC)
- ApplicationContext:用作 Spring IoC 容器的根接口。
- BeanFactory:用于访问 Spring 容器的接口。
- Beans:由 ApplicationContext 实例化、汇编和管理的对象。
Java Spring Boot 初学者教程
创建并帮助保护 Java 应用
通过 Spring Initializr 使用适用于 Microsoft Entra ID(前 Azure Active Directory) 的 Spring Boot Starter 创建 Java 应用。
常见问题解答
-
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 应用程序加速部署到云。