当前位置: 首页 > 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…...

Ghidra二进制分析工具新手指南:从安装到高效逆向实践

Ghidra二进制分析工具新手指南:从安装到高效逆向实践 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer 工具定位&a…...

ollama-QwQ-32B量化部署:在4GB内存设备运行OpenClaw的配置

ollama-QwQ-32B量化部署:在4GB内存设备运行OpenClaw的配置 1. 为什么要在低配设备上折腾大模型? 去年冬天,我在树莓派上第一次尝试部署OpenClaw时,被现实狠狠教育了一顿——32GB内存的笔记本跑得飞起,换到4GB的树莓派…...

告别爆显存!在16G显卡上高效训练SDXL LORA的完整配置流程

16G显卡极限优化:SDXL LORA训练全流程实战指南 引言 当你手握一块RTX 4060 Ti或4070这样的16G显存显卡,想要尝试SDXL LORA训练时,是否常被爆显存的恐惧支配?别担心,这不是硬件性能的终点,而是优化艺术的起点…...

Java MVC框架终极对决:Blade vs Spring Boot的完整对比指南

Java MVC框架终极对决:Blade vs Spring Boot的完整对比指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade 在Java Web开发领域,选择正确的MVC框架对项…...

Python+Mediamtx实战:5分钟搞定WebRTC视频流帧捕获(附完整代码)

PythonMediamtx实战:5分钟搞定WebRTC视频流帧捕获(附完整代码) 在实时视频处理领域,WebRTC技术因其低延迟和点对点传输特性而备受青睐。本文将带你快速搭建一个基于Mediamtx流媒体服务器和Python的WebRTC视频帧捕获系统&#xff0…...

XGBoost+SHAP实战:如何让机器学习模型‘看懂’地图?

XGBoostSHAP实战:如何让机器学习模型‘看懂’地图? 当机器学习遇上地理空间数据,我们常常面临一个核心矛盾:模型预测精度与人类可解释性之间的博弈。传统GIS分析方法如空间滞后模型(SLM)或地理加权回归&…...

别再踩坑了!Docker部署MinIO时,API和Console端口配置的保姆级避坑指南

Docker部署MinIO的端口配置避坑指南:从原理到实战 第一次用Docker部署MinIO时,我花了整整三个小时才搞明白为什么外网始终无法访问。控制台显示服务已启动,本地curl也能返回数据,但就是无法通过浏览器打开管理界面。直到查看日志才…...

如何让经典GTA游戏重获新生:终极SilentPatch修复工具完全指南

如何让经典GTA游戏重获新生:终极SilentPatch修复工具完全指南 【免费下载链接】SilentPatch SilentPatch for GTA III, Vice City, and San Andreas 项目地址: https://gitcode.com/gh_mirrors/si/SilentPatch 你是否还记得那些在GTA III、Vice City和San An…...

AI背景分离革新性全攻略:ComfyUI-BiRefNet创意工作流零基础上手指南

AI背景分离革新性全攻略:ComfyUI-BiRefNet创意工作流零基础上手指南 【免费下载链接】ComfyUI-BiRefNet-ZHO Better version for BiRefNet in ComfyUI | Both img & video 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BiRefNet-ZHO 在数字创意…...

基于深度学习的桥梁健康状态监测与预警系统设计与实现

基于深度学习的桥梁健康状态监测与预警系统设计与实现 1. 系统总体架构 本系统采用 B/S 架构,由数据采集层、数据处理层、深度学习模型层、Web后端层及前端可视化层组成。 后端框架:Django (负责ORM、API、用户认证) 深度学习:TensorFlow 2.x / Keras (构建LSTM-Autoencod…...