当前位置: 首页 > news >正文

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 应用程序开发。

相关文章:

SpringBoot及其特性

0.前言 Spring 框架提供了很多现成的功能。那么什么是 Spring Boot?使用 Spring 框架,我们可以避免编写基础框架并快速开发应用程序。为了让 Spring 框架提供基础框架,我们需要向 Spring 框架描述有关我们的应用程序及其组件的信息。 不只是…...

「JavaEE」初识进程

初识进程 🍉进程🍌操作系统的进程管理 🍉PCB 重要属性🍌进程的身份标识🍌内存指针🍌文件描述符表🍌进程的状态🍌优先级🍌记账信息🍌上下文 🍉内存…...

计算机视觉——图像特征提取D2D先描述后检测特征提取算法原理

概述 局部特征提取是计算机视觉中的一个重要任务,它旨在从图像中提取出能够代表图像局部结构和外观信息的特征。这些特征通常用于图像匹配、物体识别、三维重建、跟踪和许多其他应用。传统方法,如尺度不变特征变换(SIFT)&#xf…...

The “from“ argument must be of type string. Received undefined——vue报错记录

今天在用机器人打包测试环境时,一直报错: The "from" argument must be of type string. Received undefined 啥意思呐? 百度也没有找到对应的问题所在。 下面写一下我的解决方法: vue.config.js 在vue.config.js中…...

汽车4S行业的信息化特点与BI建设挑战

汽车行业也是一个非常大的行业,上下游非常广,像主机厂,上游的零配件,下游的汽车流通,汽车流通之后的汽车后市场,整个链条比较长。今天主要讲的是汽车流通,汽车4S集团。一个汽车4S集团下面授权代…...

JSX 和 HTML 之间的区别

JSX和 HTML 都是用于创建和构建网页的标记语言,但它们有一些关键的区别。 1. JSX 是 JavaScript 的语法扩展,而 HTML 是一种标记语言。 2. JSX 允许您在语法中包含表达式和函数,而 HTML 只允许静态文本。 3. JSX 通常用于 React 应用程序&…...

AI日报:GPT-4-Turbo正式版自带读图能力;Gemini1.5Pro开放API;SD3将于4月中旬发布;抖音宫崎骏AI特效爆火

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 &#x1f4f…...

IDEA 宝贝插件

1. Codota— 代码智能提示 Codota还包含一个网站:https://www.codota.com/code 2.Alibaba Java Code Guidelines— 阿里巴巴 Java 代码规范 3. SequenceDiagram —— 调用链路自动生成时序图 4. google-java-format —— 代码自动格式化...

[C语言][数据结构][链表] 单链表的从零实现!

目录 零.必备知识 1.一级指针 && 二级指针 2. 节点的成员列表 a.数据 b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁 1.1 节点的定义 1.2 单链表的尾插 1.3 单链表的头插 1.4 单链表的尾删 1.5 单链表的头删 1…...

oracle rac打补丁后sqlplus / as sysdba ora-12537

sqlplus / as sysdba 报错: ORA-12537: TNS:connection closed 检查用户属组: [rootrac1 ~]# id oracle uid1102(oracle) gid1101(oinstall) groups1101(oinstall),1102(dba) [rootrac1 ~]# id grid uid1101(grid) gid1101(oinstall) groups1101(oin…...

TCP-IP详解卷一:协议——阅读总结

该内容适合程序员查看 第1章 概述 1.1 引言 WAN全称是 Wide Area Network,中文名为广域网。 LAN全称是 Local Area Network,中文名为局域网。 1.2分层 ICP/IP协议族通常被认为是一个四层协议系统 分层协议应用层Telnet、FTP和e-mail运输层TCP和UDP网…...

【带源码】如何开发一个视频打赏,付费观看视频的系统?

【带源码】如何开发一个视频打赏,付费观看视频的系统?开发指南来了 最近非常火爆的视频打赏系统,有用户端,管理端,代理端 风口来了,系统部署简单,需要详细部署教程的可以留下评论哦&#xff01…...

Linux--进程的概念(一)

目录 一、冯诺依曼体系结构二、操作系统2.1 什么是操作系统2.2 操作系统的意义 三、进程3.1 进程的基本概念3.2 描述进程——PCB3.3 进程和程序的区别3.4 task_struct-PCB的一种3.5 task_struct的内容分类 四、如何查看进程4.1 通过系统文件查看进程4.2 通过ps指令查看进程 五、…...

大话设计模式——15.观察者模式(Observer Pattern)

简介 也称发布订阅模式(Publish/Subscribe),定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 UML图: 应用场景: 消息通知组件&#x…...

MySQL 主从复制部署(8.0)

什么是主从数据库 主从数据库是一种数据库架构模式,通常用于提高数据库的性能、可用性和可伸缩性。 它包括两种类型的数据库服务器: 1)主数据库(Master):主数据库是读写数据的主要数据库服务器。所有写操…...

大话设计模式——16.命令模式(Command Pattern)

简介 请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的对象进行执行。命令模式是一种特殊的策略模式,体现多个策略执行的问题,而不是选择的问题 UML图 应用场景 界面选择、键盘、按钮、事件操作都类似命令模式 …...

react17+18 中 setState是同步还是异步更新

在类组件中使用setState,在函数式组件中使用hooks的useState。 setstate目录 1. 类组件1.1 react 17版本1.2 react 18版本 2、函数式组件 1. 类组件 1.1 react 17版本 参考内容:第十一篇:setState 到底是同步的,还是异步的&…...

Unity框架,ET框架8.1版本的打包流程记录

目录 打包代码前置1.必须要安装Visusal Studio 2022的组件,如下图,必须都要进行安装,不然会在代码重构的时候报错,丢失SDK。Rider的版本必须2023及以上 步骤一、使用Rider编辑器打开项目后进行重构项目步骤二、使用HybirdCLR生成A…...

windows访问wsl中的docker

1、启动windows路由转发功能&#xff1a; 找到任务管理器 --》服务–》打开服务–》 ROUTing and Remote Access 2、关闭wsl中linux的防火墙 3、查看docker系统和linux系统的ip和网关 以下面为例 # docker系统 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu…...

golang主要优缺点

优点 1&#xff09;采用协程机制&#xff0c;可以很方便的支持高并发&#xff0c;性能还不错。 2&#xff09;非常易于使用&#xff0c;产出效率很高。 缺点 也是协程机制。程序中一切皆协程&#xff0c;并且自己做了协程调度机制&#xff0c;而不是传统的 线程机制。导致需…...

浅谈Redis和一些指令

浅浅谈一谈Redis的客户端 Redis客户端 Redis也是一个客户端/服务端结构的程序。 MySQL也是一个客户端/服务端结构的程序。 Redis的客户端也有多种形态 1.自带命令行客户端 redis-cli 2.图形化界面的客户端&#xff08;桌面程序&#xff0c;web程序&#xff09; 像这样的图形…...

AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用

目录 一、什么是LangChain&#xff1f; 二、LangChain解决了哪些问题&#xff1f; 三、LangChain总体架构 四、代码实践样例 总结 一、什么是LangChain&#xff1f; 为大模型应用提供简便之道。 LangChain&#xff0c;专为构建庞大的语言模型应用程序设计的框架&#xff0…...

Google Chrome 常用设置

Google Chrome 常用设置 References 转至网页顶部 快捷键&#xff1a;Home 转至内容设置 chrome://settings/content 清除浏览数据 历史记录 -> 清除浏览数据 关于 Chrome 设置 -> 关于 Chrome chrome://settings/help References [1] Yongqiang Cheng, https:/…...

如何提高旋转花键运行稳定性?

现代化精密仪器设备中&#xff0c;精密仪器的稳定工作性能对于生产效率和产品质量至关重要&#xff0c;运行效率和精度是常见问题。旋转花键作为机械传动系统中的重要组成部分&#xff0c;其稳定性也是直接影响到机械装配的质量和使用寿命&#xff0c;那么我们应该如何提升旋转…...

每日一题 第八十七期 洛谷 [蓝桥杯 2018 省 AB] 全球变暖

[蓝桥杯 2018 省 AB] 全球变暖 题目描述 你有一张某海域 N N N \times N NN 像素的照片&#xff0c;. 表示海洋、 # 表示陆地&#xff0c;如下所示&#xff1a; ....... .##.... .##.... ....##. ..####. ...###. .......其中 “上下左右” 四个方向上连在一起的一片陆地组…...

AI技术创业有哪些机会?

文章目录 ✍探索AI技术创业的机会与挑战&#x1f48e;引言&#x1f48e;AI技术的快速发展与应用&#x1f48e;&#x1f339;AI技术创业的机会与方向&#x1f339;1. 行业解决方案&#x1f339;2. 智能产品和服务&#x1f339;3. 教育和培训 &#x1f48e;AI技术创业的挑战与应对…...

TensorFlow学习之:基础概念和操作

TensorFlow简介 TensorFlow是一个开源的深度学习框架&#xff0c;由Google的研究团队Google Brain Team开发&#xff0c;并在2015年发布。它是基于DistBelief&#xff0c;Google之前的一个深度学习项目&#xff0c;但被重新设计以便更灵活、更强大、更适应于研究和生产。 历史…...

最新在线工具箱网站系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API&#xff0c;同时还自带免费API接口&#xff0c; 是一个多功能性工具程序&#xff0c;支持后台管理、上…...

c# InvokeRequested delegate解决线程访问界面

说明 界面操作的代码应该写在界面&#xff08;Form/Dialog&#xff09;里 方法定义 private void Method1(string s) {...... }delegate定义 private delegate void Method1Delegate(string s);界面调用代码 private void op(){string sText"hello";if (this.In…...

使用 Web Workers 作为setInterval的替代方案

使用 Web Workers 作为setInterval的替代方案 在 Vue 项目中&#xff0c;为了避免 setInterval 在标签页非激活状态下的不准确问题&#xff0c;我们可以使用 Web Workers 作为一个替代方案 Web Worker 介绍&#xff1a; Web Workers : 浏览器后台为网页运行的一个小助手&…...