引言
那些从事 Java 工作的人,甚至是刚开始学习 Java 编程的人,一定听说过 Spring Boot 这个术语。那些正在准备面试的人,无论是刚毕业的还是经验丰富的,都必须学习 Spring Boot 。很多时候面试官也会问“什么是 Spring Boot?”。不用多说它有多重要。甚至不用多说,这个术语在 Java 开发人员的生活中有多重要。
在本文中,我们将清楚地了解什么是 Spring Boot 以及 Spring Boot 的优势。此外,我们还将学习相关概念。除了学习什么是 Spring Boot?,您还将学习 Spring boot 能做什么?Spring boot相关特性等。
什么是Spring Boot?
Spring Boot 是由“Spring”和“Boot”两个词组合而成。其中,“Spring”指的是 Spring 框架,这是一个广泛使用的 Java 应用程序开发框架;而“Boot”则指的是引导程序,意味着简化应用的初始化过程。因此,Spring Boot 是一个基于 Java 的开源框架,旨在简化 Spring 应用程序的配置和引导过程,使开发者能够更快捷地构建独立运行的应用程序。
spring.io网站的官方定义是:“Spring Boot 让创建独立的、生产级的基于 Spring 的应用程序变得容易,并且可以直接运行”。
现在让我们逐字逐句地理解它。Spring Boot 简化了创建基于 Spring 的应用程序的过程。那么,Spring Boot 创建的应用程序有哪些特点呢?这类应用程序是独立的、可用于生产的,并且可以直接运行。我们不必担心如何制作 JAR/WAR 文件,如何将其部署到 Web 服务器中。这些任务和配置由 Spring Boot 在内部自动完成。此外,它将 Web 服务器嵌入到 JAR 文件中,能够在内部处理应用程序的运行过程。
Spring Boot 的核心原则是什么?
Spring Boot 基于四个核心原则:自动配置、预设最佳默认配置、约定优于配置、消除样板代码。
- 自动配置 Spring Boot 提供了一项称为自动配置的功能。简而言之,它会根据提供给它的依赖项自动配置应用程序。这意味着开发人员无需花时间自己配置应用程序。相反,Spring Boot 将根据适合大多数应用程序的合理默认设置来配置应用程序。
- 预设最佳默认配置 Spring Boot 是一个有主见的框架,这意味着它提供了关于配置和运行应用程序的最佳实践建议。这简化了开发过程,因为开发人员不需要自己做出所有决策。相反,他们可以依赖 Spring Boot 的默认配置来指导他们朝着正确的方向前进。
- 约定优于配置 Spring Boot 提供了可接受的默认配置设置,这意味着开发人员只需在需要覆盖默认值时才提供配置。这简化了开发过程,因为开发人员无需花费时间自行配置应用程序。
- 消除样板代码 Spring Boot 通过提供一组默认值和抽象来减少开发人员需要编写的样板代码量。这意味着开发人员可以专注于编写业务逻辑,而不是处理样板代码。例如,与使用 JDBC 相比,我们不再需要编写冗长的代码来获取数据库连接。相反,只需在属性文件中配置 3-4 行数据库属性即可实现数据库连接。
为什么Spring Boot这么流行?
与 Java 编程语言中的其他框架相比,Spring Boot 在很短的时间内变得非常流行。以下是使 Spring Boot 成为开发Web应用程序首选框架的一些关键因素:
- 加速项目开发:Spring Boot 大大缩短了项目的开发周期。
- 简化配置与运行:它提供了一种更简单、快捷的方式来配置、设置和运行 Web 应用程序及简单应用程序。
- 内置 Web 服务器:无需单独配置 Web 服务器(如 Tomcat、Jetty 或 Undertow),因此无需手动部署 WAR 文件。
- 减少 XML 配置:Spring Boot 减少了 XML 配置的使用,更多地采用注解配置。
- 简化注解使用:通过组合多个 Spring 注解(如 @EnableAutoConfiguration、@Configuration、@ComponentScan),引入单一注解(如 @SpringBootApplication)来简化配置。
- 降低企业级应用的工作量:Spring Boot 减少了开发人员在创建企业级应用程序时所需的工作量。
- 提供通用功能:它提供了适用于大多数项目的常见功能,从而减少了样板代码。
- 创建独立应用程序:支持创建可以使用 JAR 文件独立运行的应用程序。
- 自动配置:自动配置 Spring 和第三方库,减轻开发者负担。
- 生产级功能:提供健康检查、度量监控、外部化配置等生产就绪功能。
- 轻松集成第三方工具:提供与许多第三方工具的轻松集成机制。
- 支持微服务开发:为使用 Java 开发微服务提供了强大支持。
- 无缝集成 Spring 生态系统:Spring Boot 应用程序可轻松与其生态系统集成,如 Spring JDBC、Spring ORM、Spring Data、Spring Security、Spring Web MVC 等。
- 简化数据库集成:轻松与数据库集成,有时无需提供特定于数据库的属性(如驱动程序、方言等),因为这些属性值会自动从数据库 URL 中选取。
- 提供现成的入门项目:为开发人员提供现成的入门项目,以便快速处理功能,避免浪费时间在初始配置上。
- 支持命令行界面 (CLI):提供命令行界面 (CLI) 快速开发和测试应用程序。
- 支持常用构建工具:支持最常用的构建工具,如 Maven 和 Gradle。
Spring Boot 是如何工作的?
Spring Boot 的工作原理是提供一组启动依赖项,我们可以使用这些依赖项快速启动基于 Spring 的应用程序。这些启动依赖项包含了启动和运行应用程序所需的所有必要库和配置。开发人员可以使用这些启动依赖项来创建新项目并迅速开始开发。
Spring Boot 还包含多种功能,帮助开发人员更轻松地构建和部署应用程序。例如,它提供了一个内置的 Web 服务器(如 Tomcat、Jetty 或 Undertow),使得无需外部服务器即可部署应用程序。此外,它还提供了各种工具和插件来简化开发过程,例如 Spring Boot CLI,允许开发人员从命令行创建、运行和测试应用程序。
使用Spring Boot的优势?
- 现成的Spring Boot Starters Spring Boot 为我们提供了添加现成的starters项目的选择,以简化开发过程。我们可以在开发开始时甚至在开发过程中随时添加它们。例如,Spring Web、Spring Data JPA、Spring Security、Spring Boot Dev Tools、MySQL Driver、Java Mail Sender、Eureka Server 等都是一些可用的starters项目。
- 减少样板代码 Spring Boot 有助于避免编写样板代码、注释和复杂的 XML 配置的手动工作。它在内部使用 Spring 框架的 API 并提供易于使用的 API,使我们免于重复编写样板代码。此外,它还整合了多个 Spring 框架的注解,并提供单一注解,使我们免于手动配置(包括基于 XML 的配置)。例如,@SpringBootApplication 注解是三个 Spring 框架注解的组合:@Configuration、@ComponentScan 和 @EnableAutoConfiguration。这一特定于 Spring Boot 的注解简化了配置过程。
- 内置Web应用服务器 Spring Boot 附带嵌入式 HTTP 服务器,如 Tomcat、Jetty 和 Undertow。这些服务器以 jar 的形式提供。但是,Spring Boot 默认启用 Tomcat。如果需要,我们可以轻松启用 Jetty 和 Undertow。简而言之,我们可以根据自己的需求轻松启用或禁用这些服务器。 更容易连接数据库
- Spring Boot 允许轻松连接 Oracle、PostgreSQL、MySQL、MongoDB、Redis 等数据库。此外,它还支持轻松集成队列消息服务,如 ActiveMQ、RabbitMQ 和 Elasticsearch 等。
- 支持微服务开发 Spring Boot 与微服务架构配合良好,支持将 Spring Boot 应用程序直接部署到 Docker 容器中。
- 测试的默认设置 Spring Boot 通过提供单元测试和集成测试的默认设置,简化了基于 Java 的应用程序的创建和测试。
- 以 jar 文件形式运行应用程序 Spring Boot 规定了使用 java -jar 命令独立运行 jar 文件的方法。因此,我们甚至可以使用 java -jar 运行 Web MVC 应用程序。
- Spring Boot 配置文件可轻松切换环境 Spring Boot 的配置文件概念简化了在不同环境中运行应用程序的过程,只需更改配置文件名称和服务器详细信息即可。
- Spring Boot Actuator 用于应用程序监控 Spring Boot Actuator 提供了用于管理和监控 Spring Boot 应用程序的端点,帮助我们检查应用程序的内部工作情况。
- 提高生产力并最大限度地缩短开发时间 Spring Boot 显著提高了生产力并缩短了开发时间,这一点毋庸置疑。
使用Spring Boot的劣势?
- 开发时的一个缺点是包含许多不必要的额外依赖项,这会增加部署文件的大小。然而,当我们与优点列表进行比较时,这个缺点显得相对较小。但如果优先考虑文件大小,则这确实是一个显著的问题。
- 另一个缺点是在更新基于 Spring 的遗留项目代码时可能会遇到挑战。不过,我们可以通过使用 Spring Boot CLI(命令行界面)来克服这个问题,它将帮助我们转换遗留代码。
如何创建Spring Boot应用程序?
为了创建 Spring Boot 应用程序,我们有多种方法:
- 使用 Spring Boot CLI 工具
- 使用 Spring STS IDE
- 使用 Spring Initializr 网站
其中,Spring Tool Suite (STS) IDE 是业内最常用的方式来开发 Spring Boot 项目。它具有多种功能,并且是最用户友好的选择。STS 还能节省开发时间。
Spring Boot包含哪些常见的Starter?
在 Spring Boot 中,Starters 是可以包含在应用程序中的现成小项目,正式名称为依赖项描述符。Starters 包含许多依赖项,这些依赖项可以帮助您快速启动并运行项目,并提供一组一致、受支持的传递依赖项。例如,如果您想开始使用 Spring Web 应用程序,可以在项目中包含 spring-boot-starter-web 依赖项。如果您使用 STS 作为 IDE,则只需搜索“Web”并选择“Spring Web”,STS 将自动在您的 pom.xml 中添加 spring-boot-starter-web 依赖项。
所有官方 Starters 都遵循类似的命名模式:spring-boot-starter-*,其中 * 表示特定类型的应用程序。此命名结构旨在帮助您更容易地找到合适的 Starter。如前所述,Maven 与许多 IDE(如 STS)集成,允许您按名称搜索依赖项。
常用的Starter列表
Starter名称使用场景
spring-boot-starter
核心启动器,包括自动配置支持、日志记录和 YAML
spring-boot-starter-activemq
使用 Apache ActiveMQ 进行 JMS 消息传递的启动器
spring-boot-starter-aop
使用 Spring AOP 和 AspectJ 进行面向方面编程的启动器
spring-boot-starter-data-jpa
使用 Spring Data JPA 和 Hibernate
spring-boot-starter-batch
使用 Spring Batch
spring-boot-starter-cache
使用 Spring Framework 缓存支持的启动器
spring-boot-starter-data-jdbc
使用 Spring Data JDBC 的启动器
spring-boot-starter-data-ldap
使用 Spring Data LDAP
spring-boot-starter-data-mongodb
使用 MongoDB 面向文档数据库和 Spring Data MongoDB
spring-boot-starter-validation
使用 Java Bean Validation 和 Hibernate Validator 的启动器
spring-boot-starter-data-elasticsearch
使用 Elasticsearch 搜索和分析引擎以及 Spring Data Elasticsearch
spring-boot-starter-data-rest
使用 Spring Data REST 通过 REST 公开 Spring Data 存储库
spring-boot-starter-freemarker
使用 FreeMarker 视图构建 MVC Web 应用程序
spring-boot-starter-integration
使用 Spring Integration 的启动器
spring-boot-starter-jersey
使用 JAX-RS 和 Jersey 构建 RESTful Web 应用程序。starter-web 的替代方案
spring-boot-starter-json
用于读取和写入 JSON
spring-boot-starter-mail
使用 Java Mail 和 Spring Framework 的电子邮件发送支持
spring-boot-starter-security
使用 Spring Security
spring-boot-starter-test
使用包括 JUnit Jupiter、Hamcrest 和 Mockito 在内的库测试 SpringBoot 应用程序
spring-boot-starter-web
使用 Spring MVC 构建 Web(包括 RESTful)应用程序。使用 Tomcat 作为默认嵌入式容器
spring-boot-starter-webflux
使用 Spring Framework 的 Reactive Web 支持构建 WebFlux 应用程序
spring-boot-starter-thymeleaf
使用 Thymeleaf 视图构建 MVC Web 应用程序
此外,完整的启动器列表可以在官方的 spring.io 网站上找到。
版权归原作者 疯一样的码农 所有, 如有侵权,请联系我们删除。