SpringBoot及其特性

0.前言

Spring 框架提供了很多现成的功能。那么什么是 Spring Boot?使用 Spring 框架,我们可以避免编写基础框架并快速开发应用程序。为了让 Spring 框架提供基础框架,我们需要向 Spring 框架描述有关我们的应用程序及其组件的信息。
不只是我们的应用程序组件需要配置;甚至 Spring 框架提供的类也必须在 Spring 框架内配置为 Bean。

SpringBoot

1.Spring配置

1.1.基于 XML 的配置:一种经典方法

  • 我们可以向 Spring 框架提供有关我们类的配置信息的一种方法是使用基于 XML 的配置,特别是 Spring Bean 配置文件。当然,Spring 为我们处理了大部分过程,但一切都是需要付出代价的。我们需要提供大量有关我们的应用程序及其组件的信息,以便 Spring 理解并提供所需的功能。似乎在某个时候,我们可能会发现自己花费了大量时间来描述应用程序的细节。这会导致使用 Spring 框架时的复杂性增加,使人们难以使用。
  • Spring Framework 开发人员注意到了这一现象,从而引入了使用注释配置应用程序信息的替代方法。以 XML 格式编写配置可能很麻烦、容易出错且耗时,因为它很复杂。因此,Spring 通过使用注释引入了基于 XML 的配置的替代方案。

1.2.原型注释:一次飞跃

  • Spring 引入了原型注释,以加快 Spring 框架中应用程序类的配置。诸如@Repository、@Service、@Controller、@RestController、@Autowired、@Qualifier等注释可直接应用于@Component我们的应用程序类。这种方法可帮助我们绕过基于 XML 的配置。
  • 然而,有时我们需要将 Spring Framework 本身或第三方库提供的类合并到我们的应用程序中。在这些情况下,我们可能无法访问这些类的源代码。因此,我们不能直接将构造型注释应用于这些类。
  • 现在,开发应用程序的主要方法是对具有源代码的类使用构造型注释,而对没有可用源代码的框架或第三方库则依赖 Spring Bean 配置。这种组合需要同时使用 Spring Bean 配置和构造型注释。然而,我们似乎还没有完全解决最初的问题。为了解决这个问题,Spring 引入了 Java 配置方法。
  • 现在,开发应用程序的唯一方法是为我们的类(具有源代码)编写 Stereotype 注释,并使用 Spring Bean 配置框架或第三方库(没有源代码)。这种组合涉及同时使用Spring Bean Configuration和Stereotype注释。
  • 但是,我们似乎还没有完全克服最初的问题。为了解决这个问题,Spring引入了这种Java Configuration方法。

1.3.Java 配置:补足差距

Spring 引入了 Java 配置方法,无需在 Spring Bean 配置文件中配置没有源代码的类,我们可以在单独的 Java 配置类中编写它们的配置。
优点:
无需记住配置的 XML 标签。类型安全的配置。然而,Java 配置方法似乎并未完全解决这个问题。这是因为,除了 XML 之外,我们现在还需要在框架组件的配置中编写大量代码。Java 配置方法似乎并没有提供比基于 XML 的配置更好的替代方案。开发人员对需要​​编写大量代码感到沮丧。
除了简化 Spring 框架集成之外,Spring Boot 还提供内置功能,用于执行将应用程序打包为独立 JAR、设置嵌入式 Web 服务器以及管理应用程序依赖项等任务,使其成为快速开发和部署的综合工具。

2.SpringBoot的功能

2.1.自动配置:

在使用 Spring Framework 开发应用程序期间,不仅仅是我们的应用程序组件需要在 IoC(控制反转)容器内以 bean 定义的形式进行配置。以这种方式配置 Spring Framework 类似乎需要大量信息,从而导致更复杂且耗时的开发过程。这就是自动配置概念发挥作用的地方。

开发人员和框架创建者都了解配置框架组件所需的属性和值。鉴于这种共同的理解,人们可能会质疑为什么框架本身不会自动配置其组件以促进我们应用程序的运行。这就是自动配置的本质。

尤其是 Spring Boot,它采用了一种固定的方法来自动配置框架组件。它会扫描我们应用程序的类路径中存在的库并推断出必要的框架组件。它负责为这些组件配置适当的默认值。

例如,如果 Spring Boot 检测到类路径中存在“spring-jdbc”库并识别出正在使用的数据库驱动程序(在本例中假设为“h2”),它将继续配置基本 bean 定义,例如DriverManagerDataSource、DataSourceTransactionManager和JdbcTemplate,所有这些都设置为“h2”数据库的默认值。

如果要求偏离这些默认值,Spring Boot 会无缝地适应程序员在配置框架组件时的输入。

通过利用自动配置的强大功能,开发人员可以轻松地深入编写应用程序的核心业务逻辑,而 Spring Boot 则负责处理复杂的框架组件。

本质上,自动配置减轻了手动配置的负担,自动使用为应用程序量身定制的默认设置来设置 Spring Framework 组件。这样,开发人员就无需再为其应用程序微调 Spring Framework。

2.2. 启动依赖项

Spring Boot 提供了 Maven 原型,旨在加快项目依赖项的配置。这些原型称为“引导启动器依赖项”,可根据所选的 Spring Framework 版本将 Spring Framework 模块和外部库依赖项与适当的版本对齐,从而简化 Spring Framework 模块和外部库依赖项的整合。

在开发基于 Spring Framework 的应用程序时,开发人员需要配置项目将使用的依赖项。这项任务通常很繁琐,涉及排除依赖项故障和查找兼容版本的潜在挑战。此外,这不仅涉及设置外部库类,还涉及辨别各个 Spring Framework 模块之间的版本兼容性。

此外,当考虑将应用程序迁移到更高或更新的 Spring Framework 版本时,必须重新审视调试和识别依赖项的精确版本的整个过程。

为了应对这些挑战并简化设置 Spring Framework 项目及其兼容依赖项(包括第三方依赖项)的过程,Spring Boot 引入了“启动依赖项”的概念。

对于每种项目类型或技术,Spring Boot 都提供了专用的启动器。这些启动器可以无缝集成到 Maven 或 Gradle 项目中。这样,Spring Boot 就承担起了整合必要的 Spring 相关模块和外部库的责任,所有这些都配备了兼容的版本。

2.3.执行器端点:

使用 Spring Boot,我们能够开发从开发顺利过渡到生产级部署的应用程序。Actuator Endpoints是一项强大的功能,它提供了各种内置端点,包括健康检查、指标评估、内存洞察等功能。重要的是,这些端点可以轻松启用,从而方便在生产环境中部署应用程序。这样就无需添加额外的代码来确保应用程序适合生产部署。

Spring Boot 显著简化了应用程序开发过程,使其更加高效和易于管理。其突出特点之一是包含执行器端点。这些端点是运行时监视和管理应用程序的重要工具。它们为应用程序的运行状况、性能和其他方面提供了宝贵的见解。

例如,“健康”端点支持实时健康检查,使管理员能够及时发现任何问题。“指标”端点提供了一套全面的指标,有助于进行性能分析。此外,“内存”端点提供有关内存使用情况的信息,这对于优化资源分配至关重要。

Actuator Endpoints 的优点在于其开箱即用和易于集成。只需启用所需的端点,开发人员就可以访问有关应用程序的宝贵信息,而无需编写额外的代码。这不仅节省了时间,还提高了在不同环境中管理和监控应用程序的效率。

2.4.DevTools【开发特性】

借助 DevTools,代码调试变得非常高效。通常,当我们在开发过程中修改代码时,我们不得不重新部署并重新启动应用服务器。不幸的是,这个过程会耗费大量的开发时间。然而,DevTools 带来了令人耳目一新的变化。它确保我们所做的任何代码更改都能无缝反映出来,而无需完全重新启动应用服务器。相反,DevTools 会动态地将我们更改的特定类重新加载到 JVM 内存中。这种智能功能大大缩短了调试时间,促进了更顺畅、更高效的开发过程。

2.5. 嵌入式容器

嵌入式容器的概念是一项显著的功能,它增强了开发过程。在这种方法中,服务器作为库集成到项目中。因此,您可以直接从代码库执行项目。无需外部安装容器,也无需繁琐的打包和部署到单独服务器的过程。这种简化的方法大大加快了应用程序开发的开发和质量保证阶段。

2.6.Spring Boot CLI:

Spring Boot 命令行界面 (CLI) 引入了一个强大的工具,可以快速开发和执行原型代码。通过利用 Spring CLI,您可以非常轻松地编写 Spring Framework 代码,类似于创建 RestController。然后可以使用 CLI 快速执行此代码。

此 CLI 可用作 shell,可以方便地安装在本地计算机上。它使您能够快速编写和运行 Spring Framework 代码,而无需进行大量设置或配置。Spring Boot CLI 的主要目标是促进原型和实验代码的快速执行。这种快速的开发过程在测试和验证新概念或想法时显著提高了敏捷性。

3.SpringBoot的功能优势

  • 快速启动体验: Spring Boot 为构建 Spring Framework 应用程序提供了无缝起点,加快了设置过程。
  • 快速应用程序开发:借助 Spring Boot 的简化方法,开发人员可以快速开发应用程序,从而提高效率和生产力。
  • 自动配置:自动配置功能可使用默认设置高效地配置框架组件。在需求不同的情况下,简单的配置可轻松调整组件。
  • 生产级部署: Spring Boot 支持部署符合生产级标准的应用程序,确保稳定性和可靠性。
  • 增强的非功能性方面:除了核心功能之外,Spring Boot 还解决了应用程序开发的非功能性方面。这包括调试、开发期间自动重启以及用于指标和内存管理的强大工具等功能。

本质上,Spring Boot 通过提供一系列简化流程、增强生产准备和增强开发体验的功能,彻底改变了 Spring Framework 应用程序开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600818.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

混合云构建-如何通过Site to Site VPN 连接 AWS 和GCP云并建立一个高可用的VPN通信

如果我们的业务环境既有AWS云又有GCP云,那么就需要将他们打通,最经济便捷的方式就是通过Site-to-Site VPN连接AWS和GCP云,你需要在两个云平台上分别配置VPN网关,并建立一个VPN隧道来安全地连接这两个环境,稍微有些复杂繁琐,以下是详细步骤的动手实践: 一、在GCP 云中创…

深入了解iOS内存(WWDC 2018)笔记-内存诊断

主要记录下用于分析iOS/macOS 内存问题的笔记。 主要分析命令: vmmap, leaks, malloc_history 一:前言 有 3 种思考方式 你想看到对象的创建吗?你想要查看内存中引用对象或地址的内容吗?或者你只是想看看 一个实例有多大&#…

LiveGBS流媒体平台GB/T28181常见问题-系统服务日志如何配置日志个数日志路径日志时长web操作日志操如何配置保留天数及过滤

LiveGBS系统服务日志如何配置日志个数日志路径日志时长web操作日志操如何配置保留天数及过滤 1、系统服务日志1.1、日志目录1.2、配置日志文件个数及记录时间1.3、配置日志文件路径 2、Web 操作日志2.1、配置保留天数2.2、配置不记录操作日志2.1.1、不记录所有2.1.2、不记录指定…

JS与Python函数在语法的区别

区别 标题语法:Python使用缩进来表示代码块,而JavaScript使用大括号{}。 Python函数定义: def my_function():# 函数体JavaScript函数定义: function myFunction() {// 函数体 }标题参数传递:Python支持位置参数、…

智能化办公时代来临:AI助你解放双手

文章目录 一、AI在办公领域的广泛应用二、AI助力办公效率提升1.自动化流程减少繁琐任务2.智能分析辅助决策制定3.个性化服务提升用户体验 三、AI提升办公效率的未来趋势1.更加智能化的办公场景2.更高效的团队协作3.更全面的数据安全保护 四、应对AI带来的挑战《AI高效工作一本通…

【二分查找】Leetcode 山脉数组的峰顶索引

题目解析 852. 山脉数组的峰顶索引 这到题使用暴力枚举的查找方法发现这段数组是有二段性的&#xff0c;峰顶左边的一段区间是一段递增区间&#xff0c;右边的一段区间是一段递减区间 算法讲解 class Solution { public:int peakIndexInMountainArray(vector<int>&am…

三、【易 AI】Live2d 移植 QT

且举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 ——《逍遥游北冥有鱼》庄周 零、文件清单(Release X64环境) 文件源于官方 SDK 、生成的 Demo 项目、以及操作系统, 1、系统库 需要找到项目生成的四个库以及对应的头文件,Framework.lib、g…

2024骨传导耳机排行榜:盘点最值得买入手的5大热门款式!

要问目前市面上哪款蓝牙耳机最火爆&#xff0c;那非骨传导耳机莫属&#xff0c;它凭借不入耳佩戴&#xff0c;健康又舒适的特点&#xff0c;深得消费者的喜欢&#xff0c;但随着骨传导耳机市场逐渐热门&#xff0c;市面上开始出现越来越多的耳机品牌&#xff0c;它们的性能配置…

并发学习26--多线程 异步模式之工作线程

定义&#xff1a;让有限的工作线程&#xff08;Worker Thread&#xff09;来轮流异步处理无限多的任务。线程池便是这种模式。 饥饿&#xff1a; 固定大小线程池也会有饥饿现象。 若一个线程池有两个线程&#xff0c;能够处理两种任务。但是两种任务间有先后顺序。若来一个任…

TS封装axios并约束请求参数以及响应的类型

封装一个简单的axios src/utils/axiosInstance.ts&#xff1a;其中定义了基本返回数据的类型 import axios, {AxiosInstance,AxiosResponse,AxiosError,AxiosRequestConfig, } from "axios"// 定义基本返回数据类型 export interface ApiResponse<T> {code: …

iOS:如何安全且优雅地操控数组元素

前言 在 iOS 开发的世界里&#xff0c;数组(Array)的操作频率高得令人咋舌。数组贯穿于我们每一个功能的实现和每一行代码的编写之中&#xff0c;一手托起了数据结构的半边天。但这位工具之王&#xff0c;有时候也会变身为导致程序崩溃的罪魁祸首。当访问越界&#xff0c;当插…

如何批量替换文件名中的字符?汇总3个超简单办法

如何批量替换文件名中的字符&#xff1f;在现代社会中&#xff0c;我们的生活充斥着大量的数字化文件&#xff0c;如照片、文档、音频和视频等。然而&#xff0c;有时这些文件的命名可能并不理想&#xff0c;包含了不必要的字符或格式。这时&#xff0c;批量替换文件名中的字符…