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

Spring Boot教程之Spring Boot简介

Spring Boot 简介

接下来一段时间,我会持续发布并完成Spring Boot教程

Spring 被广泛用于创建可扩展的应用程序。对于 Web 应用程序,Spring 提供了 Spring MVC,它是 Spring 的一个广泛使用的模块,用于创建可扩展的 Web 应用程序。但主要

Spring 项目的缺点是配置非常耗时,对于新开发人员来说可能有点难以承受。

如果您是 Spring 新手,则需要花一些时间才能使应用程序投入生产。解决方案是

Spring Boot

Spring Boot 建立在 Spring 之上,包含 Spring 的所有功能。它现在越来越受到开发人员的青睐,因为它是一个快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置。Spring Boot 是一个基于微服务的框架,在其中创建生产就绪的应用程序所需的时间非常少。Spring Boot 的先决条件是 Spring 框架的基本知识。

Spring Boot 的特点

Spring Boot 建立在传统的 Spring 框架之上。因此,它提供了 Spring 的所有功能,并且比 Spring 更易于使用。

  • 它允许避免 Spring 中存在的繁重的 XML 配置:与Spring MVC 项目 不同,在 Spring Boot 中一切都是自动配置的。我们只需要使用适当的配置来利用特定的功能。 例如:如果我们想使用Hibernate(ORM),那么我们可以在模型/实体类上方添加@Table 注释(稍后讨论),并添加@Column 注释以将其映射到数据库中的表和列
  • 它提供了 REST 端点的轻松维护和创建:在 Spring Boot 中创建REST API非常容易。只需在控制器类上使用注释@RestController和@RequestMapping(/endPoint)即可。
  • 它包括嵌入式 Tomcat 服务器:与Spring MVC 项目 不同,我们必须手动添加和安装 tomcat 服务器,而 Spring Boot 带有嵌入式 Tomcat 服务器,以便应用程序可以托管在其上。
  • 部署非常简单,war 和 jar 文件可以轻松部署在 tomcat 服务器中:warjar文件可以直接部署在 Tomcat 服务器上,Spring Boot 提供了将我们的项目转换为 war 或 jar 文件的功能。此外,Tomcat 实例也可以在云上运行。
  • 基于微服务的架构:顾名思义,微服务是指专注于单一类型功能并公开 API(应用程序外围接口)的模块/服务的名称。让我们以医院管理系统为例。
    • 对于单片系统,单一代码将包含所有功能,而这些功能在大规模下很难维护。
    • 但是在基于微服务的系统中,每个功能可以分为更小的子系统,如处理患者注册的服务、处理数据库管理的服务、处理计费的服务等。

    基于微服务的系统可以轻松迁移,因为只需要更改一些服务,这也使调试和部署变得容易。此外,每个服务都可以集成,并且可以采用适合它们的不同技术。

Spring Boot 的演变

  1. Spring Boot 的诞生,源于 2012 年 10 月,一位客户Mike Youngstrom提出了一个 Jira 请求,要求引导 Spring 框架,以便能够快速启动。因此,2013 年初,Spring Boot 诞生了。
  2. 2014 年 4 月,Spring Boot 1.0发布,随后又推出了多个版本。
  3. 2014 年 6 月发布Spring Boot 1.1
  4. 1.2 2015年3月,
  5. 1.3 2016年12月,
  6. 2017 年 1 月为1.4 ,
  7. 2017 年 2 月发布Spring Boot 1.5

Spring Boot 架构

为了了解 Spring Boot 的架构,我们首先了解其中存在的不同层和类。

  • Spring Boot 中的层: Spring Boot 中有四个主要层:
    • 表示层:顾名思义,它由视图(即前端部分)组成
    • 数据访问层:数据库上的 CRUD(创建、检索、更新、删除)操作属于此类别。
    • 服务层:由服务类组成并使用数据访问层提供的服务。
    • 集成层:它由不同的 Web 服务组成(任何可通过互联网提供的服务并使用XML消息传递系统)。
  • 然后我们有实用程序类、验证器类和视图类。
  • 所有类提供的服务都在其相应的类中实现,并通过实现对这些接口的依赖来检索。

Spring Boot 流程架构


  • 由于 Spring boot 使用了类似 Spring data、 Spring MVC的所有功能/模块,因此其架构几乎与 spring MVC 相同,只是 Spring boot 中不需要DAODAOImpl 类
  • 创建数据访问层只需要一个存储库类,该类是实现包含 CRUD 操作的类。
  • 客户端发出 https 请求(PUT/GET)
  • 然后它转到控制器,并且将该路由映射到请求的控制器处理它,并在需要时调用服务逻辑。
  • 业务逻辑在服务层执行,该服务层可能对数据库中的数据执行逻辑,该逻辑通过 JPA 与模型/实体类映射
  • 最后,如果没有发生错误,则响应中返回一个 JSP 页面。

设置 Spring Boot:

  1. 从Oracle 官方网站安装Java JDK。
  2. 下载并安装 Spring Tool Suite (STS)。
  3. 启动一个新的 Spring Starter 项目
    • 点击文件 -> 新建 -> Spring 启动项目
    • 填写适当的详细信息并添加依赖项并完成。
    • 编辑应用程序属性。
    • 将主文件作为 Java 应用程序运行。

相关文章:

Spring Boot教程之Spring Boot简介

Spring Boot 简介 接下来一段时间,我会持续发布并完成Spring Boot教程 Spring 被广泛用于创建可扩展的应用程序。对于 Web 应用程序,Spring 提供了 Spring MVC,它是 Spring 的一个广泛使用的模块,用于创建可扩展的 Web 应用程序。…...

Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南

概述 随着人工智能技术的迅猛发展,多模态模型在各类应用场景中展现出强大的潜力和广泛的适用性。Qwen2-VL 作为最新一代的多模态大模型,融合了视觉与语言处理能力,旨在提升复杂任务的执行效率和准确性。本指南聚焦于 Qwen2-VL 在三个关键领域…...

【安全科普】NUMA防火墙诞生记

一、我为啥姓“NUMA” 随着网络流量和数据包处理需求的指数增长,曾经的我面对“高性能、高吞吐、低延迟”的要求,逐渐变得心有余而力不足。 多CPU技术应运而生,SMP(对称多处理)和NUMA(非一致性内存访问&a…...

机器学习day2-特征工程

四.特征工程 1.概念 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 将任意数据(文本或图像等)转换为数字特征,对特征进行相关的处理 步骤:1.特征提取;2.无量纲化(预处理&#xf…...

Python数据分析NumPy和pandas(三十五、时间序列数据基础)

时间序列数据是许多不同领域的结构化数据的重要形式,例如金融、经济、生态学、神经科学和物理学。在许多时间点重复记录的任何内容都会形成一个时间序列。许多时间序列是固定频率的,也就是说,数据点根据某些规则定期出现,例如每 1…...

Python 小高考篇(6)常见错误及排查

目录 TypeError拼接字符串和数字错误示范正确示范 数字、字符串当成函数错误示范 给函数传入未被定义过的参数错误示范 传入的参数个数不正确错误示范 字符串相乘错误示范正确示范 量取整数的长度错误示范正确示范 格式化字符串时占位符个数不正确错误示范 给复数比较大小错误示…...

k8s上部署redis高可用集群

介绍: Redis Cluster通过分片(sharding)来实现数据的分布式存储,每个master节点都负责一部分数据槽(slot)。 当一个master节点出现故障时,Redis Cluster能够自动将故障节点的数据槽转移到其他健…...

C++的类和对象

在C中,类(class)和对象(object)是面向对象编程(OOP)的核心概念。以下是它们的详细介绍: 1. 类(Class) 定义: 类是用来定义一个新的数据类型&…...

自动驾驶系列—深入解析自动驾驶车联网技术及其应用场景

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

机器学习(1)

一、机器学习 机器学习(Machine Learning, ML)是人工智能(Artificial Intelligence, AI)的一个分支,它致力于开发能够从数据中学习并改进性能的算法和模型。机器学习的核心思想是通过数据和经验自动优化算法&#xff…...

深入理解 Redis跳跃表 Skip List 原理|图解查询、插入

1. 简介 跳跃表 ( skip list ) 是一种有序数据结构,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 在 Redis 中,跳跃表是有序集合键的底层实现之一,那么这篇文章我们就来讲讲跳跃表的实现原理。 2. …...

Halcon HImage 与 Qt QImage 的相互转换(修订版)

很久以前,我写过一遍文章来介绍 HImage 和 QImage 之间的转换方法。(https://blog.csdn.net/liyuanbhu/article/details/91356988) 这个代码其实是有些问题的。因为我们知道 QImage 中的图像数据不一定是连续的,尤其是图像的宽度…...

【Golang】——Gin 框架中的模板渲染详解

Gin 框架支持动态网页开发,能够通过模板渲染结合数据生成动态页面。在这篇文章中,我们将一步步学习如何在 Gin 框架中配置模板、渲染动态数据,并结合静态资源文件创建一个功能完整的动态网站。 文章目录 1. 什么是模板渲染?1.1 概…...

CSS:导航栏三角箭头

用CSS实现导航流程图的样式。可根据自己的需求进行修改,代码精略的写了一下。 注:场景一和场景二在分辨率比较低的情况下会有一个1px的缝隙不太优雅,自行处理。有个方法是直接在每个外面包一个DIV,用动态样式设置底色。 场景一、…...

onlyoffice Command service(命令服务)使用示例

一、说明 文档在这里:https://api.onlyoffice.com/docs/docs-api/additional-api/command-service/ 命令服务提供有几个简单的接口封装。也提供了前端和后端同时操作文档的可能。 二、正文 命令服务地址:https://documentserver/coauthoring/Com…...

QSS 设置bug

问题描述: 在QWidget上add 一个QLabel,但是死活不生效 原因: c 主程序如下: QWidget* LOGO new QWidget(logo_wnd);LOGO->setFixedSize(logo_width, 41);LOGO->setObjectName("TittltLogo");QVBoxLayout* tit…...

交换排序——快速排序

交换排序——快速排序 7.7 交换排序——快速排序快速排序概念c语言的库函数qsort快速排序框架quickSort 7.7 交换排序——快速排序 快速排序概念 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法(下文简称快排),其基本思想为&a…...

nodejs入门(1):nodejs的前后端分离

一、引言 我关注nodejs还是从前几年做了的一个电力大数据展示系统开始的,当然,我肯定是很多年的计算机基础的,万变不离其宗。 现在web网站都流行所谓的前后端结构,不知不觉我也开始受到这个影响,以前都是前端直接操作…...

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

很简单的起因,我的东西最终需要跑在amd64上,但是因为mac的架构师arm64,所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。 检查镜像架构: docker inspect 8135f475e221 | grep Arc…...

gorm框架

连接 需要下载mysql的驱动 go get gorm.io/driver/mysql go get gorm.io/gorm 约定 主键:GORM 使用一个名为ID 的字段作为每个模型的默认主键。表名:默认情况下,GORM 将结构体名称转换为 snake_case 并为表名加上复数形式。 例如&#xf…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...