SpringBoot开发——初步了解SpringBoot
文章目录
- 一、SpringBoot简介
-
- 1、什么是Spring Boot
- 2、Spring Boot的优点
- 3、Spring Boot功能
- 二、Spring与Spring Boot对比
- 三、Spring Boot与Spring MVC
- 四、Spring Boot体系结构
- 五、Springboot Initializr
-
- 1、Spring Initializr
- 2、Spring Initializr模块
一、SpringBoot简介
1、什么是Spring Boot
Spring Boot是一个构建在Spring框架顶部的项目。它提供了一种简便,快捷的方式来设置,配置和运行基于Web的简单应用程序。
它是一个Spring模块,提供了 RAD(快速应用程序开发)功能。它用于创建独立的基于Spring的应用程序,因为它需要最少的Spring配置,因此可以运行。

简而言之,Spring Boot是 Spring Framework 和 嵌入式服务器的组合。
在Spring Boot不需要XML配置(部署描述符)。它使用约定优于配置软件设计范例,这意味着可以减少开发人员的工作量。
我们可以使用Spring STS IDE 或 Spring Initializr 进行开发Spring Boot Java应用程序。
与Spring Boot框架一起,其他许多Spring姐妹项目也有助于构建满足现代业务需求的应用程序。 Spring姐妹项目如下:
- Spring Data: 它简化了来自关系数据库和 NoSQL 数据库的数据访问。
- Spring Batch: 它提供了强大的批处理处理。
- Spring Security: 这是一个安全框架,可为应用程序提供强大的安全性。
- Spring Social: 它支持与LinkedIn等社交网络集成。
- Spring Integration: 它是企业集成模式的实现。使用轻量级消息传递和声明性适配器,它有助于与其他企业应用程序集成。
2、Spring Boot的优点
- 不需要web.xml
- 不需要springmvc.xml
- 不需要tomcat,SpringBoot内嵌了tomcat
- 不需要配置JSON解析,支持REST架构
- 个性化配置也非常简单
- 它创建独立 Spring应用程序,这些应用程序可以使用Java -jar 启动。
3、Spring Boot功能
- Web开发
- SpringApplication
- 应用程序事件和侦听器
- 应用管理
- 外部配置
- 属性文件
- YAML支持
- 类型安全配置
- 日志
- 安全性
Web开发
这是用于Web应用程序开发的非常适合的Spring模块。我们可以轻松创建一个独立的HTTP应用程序,该应用程序使用 Tomcat,Jetty 或Undertow等嵌入式服务器。我们可以使用 spring-boot-starter-web 模块快速启动和运行应用程序。
SpringApplication
SpringApplication是一个类,提供了一种方便的方式来引导Spring应用程序。可以从main方法开始。我们可以仅通过调用静态run()方法来调用应用程序。
示例:
public static void main(String[] args)
{ SpringApplication.run(ClassName.class, args);
}
应用程序事件和侦听器
Spring Boot使用事件来处理各种任务。它允许我们创建用于添加侦听器的工厂文件。我们可以使用 ApplicationListener键来引用它。
总是在META-INF文件夹中创建工厂文件,例如 META-INF/spring.factories 。
应用管理
Spring Boot提供了为应用程序启用与管理员相关的功能的功能。它用于远程访问和管理应用程序。我们可以使用 spring.application.admin.enabled 属性在Spring Boot应用程序中启用它。
外部配置
Spring Boot允许我们外部化我们的配置,以便我们可以在不同环境中使用同一应用程序。该应用程序使用YAML文件来外部化配置。
属性文件
Spring Boot提供了一组丰富的 应用程序属性。因此,我们可以在项目的属性文件中使用它。该属性文件用于设置诸如 server-port = 8082 等属性。它有助于组织应用程序属性。
YAML支持
它提供了一种方便的方法来指定层次结构。它是JSON的超集。 SpringApplication类自动支持YAML。它是属性文件的代替方法。
类型安全配置
强大的类型安全配置用于管理和验证应用程序的配置。应用程序配置始终是至关重要的任务,应该是类型安全的。我们还可以使用此库提供的注释。
日志
Spring Boot对所有内部记录都使用通用记录。默认情况下管理日志记录依赖项。如果不需要自定义,我们不应更改日志记录依赖项。
安全性
Spring Boot应用程序是spring的Web应用程序。因此,默认情况下,通过所有HTTP端点上的基本身份验证,它是安全的。可以使用一组丰富的端点来开发安全的Spring Boot应用程序。
二、Spring与Spring Boot对比
Spring Boot是用于创建微服务的基于Java的开源框架。它是由Pivotal Team开发的,用于构建独立的和生产就绪的弹簧应用程序。
Spring: Spring框架是最流行的Java应用程序开发框架。 Spring框架的主要功能是依赖注入或控制反转(IoC)。借助Spring Framework,我们可以开发一个松耦合的应用程序。如果纯粹定义应用程序类型或特征,最好使用。
SpringBoot: Spring Boot是Spring Framework的模块。它允许我们构建具有最少配置或零配置的独立应用程序。如果我们要开发一个简单的基于Spring的应用程序或RESTful服务,最好使用它。
Spring和Spring Boot之间的主要比较讨论如下:
Spring
Spring Boot
Spring Framework是用于构建应用程序的广泛使用的Java EE框架。
SpringBoot Framework被广泛用于开发 REST API。
它旨在简化Java EE开发,从而使开发人员更加高效。
它旨在缩短代码长度,并提供开发 Web应用程序的最简单方法。
Spring Framework的主要功能是依赖注入。
Spring Boot的主要功能是自动配置。它会根据需求自动配置类。
通过允许我们开发松耦合应用程序,可以使事情变得更简单。
它有助于创建配置更少的独立应用。
开发人员编写了大量代码(模板代码)来完成最小的任务。
它减少样板代码。
要测试Spring项目,我们需要显式设置服务器。
SpringBoot提供了嵌入式服务器,例如 Jetty 和 Tomcat 等。
它不支持内存数据库。
它提供了多个插件来处理嵌入式和内存中数据库,例如 H2 。
开发人员在 pom.xml 中为Spring项目手动定义依赖项。
Spring Boot在pom.xml文件中带有 starter 概念,该概念内部负责根据Spring Boot要求下载依赖项 JAR 。
三、Spring Boot与Spring MVC
Spring Boot: SpringBoot使得快速引导和开始开发基于Spring的过程变得容易。应用。它避免了很多样板代码。它隐藏了很多复杂的信息,因此开发人员可以快速入门并轻松开发基于Spring的应用程序。
Spring MVC: Spring MVC是用于以下方面的Web MVC框架: 构建Web应用程序。它包含许多用于各种功能的配置文件。这是一个面向HTTP的Web应用程序开发框架。
Spring Boot和Spring MVC出于不同的目的而存在。下面讨论了Spring Boot和Spring MVC之间的主要比较:
SpringBoot
SpringMVC
SpringBoot 是Spring的模块,用于使用合理的默认值打包基于Spring的应用程序。
SpringMVC 是Spring框架下基于模型视图控制器的Web框架。
它提供了用于构建 Spring-powered 框架的默认配置。
它提供了易于使用功能来构建Web应用程序。
无需手动构建配置。
它需要手动进行构建配置。
不需要部署描述符。
必需。
它避免了样板代码,并将依赖项包装在一个单元中。
它分别指定每个依赖项。
它减少开发时间并提高生产率。
要花费相同的时间,要花费更多。
四、Spring Boot体系结构
SpringBoot是Spring框架的模块。它用于轻松创建独立的生产级基于Spring的应用程序。它是在核心Spring框架的顶部开发的。
SpringBoot遵循一个分层的体系结构,其中每一层都与它的直接下层或上层(层次结构)进行通信。
之前了解 SpringBoot Architecture 后,我们必须了解其中的不同层和类。 SpringBoot中有四个层,如下所示:
- 展示层
- 业务层
- 持久层
- 数据库层

展示层: 表示层负责处理HTTP请求,将JSON参数转换为对象,并对请求进行身份验证并将其传输到业务层。简而言之,它由视图即前端部分组成。
业务层: 业务层处理所有业务逻辑 。它由服务类组成,并使用数据访问层提供的服务。它还执行授权和验证。
持久层: 持久层包含所有存储逻辑,并将业务对象与数据库行进行相互转换。
数据库层: 在数据库层中, CRUD (创建,检索,更新,删除)
五、Springboot Initializr
1、Spring Initializr
Spring Initializr 是Pivotal Web服务提供的 基于网络的工具。借助 Spring Initializr ,我们可以轻松生成 Spring Boot Project 的结构。它提供了用于创建基于JVM的项目的可扩展API。
它还为项目提供了以元数据模型表示的各种选项。元数据模型使我们能够配置JVM和平台版本等支持的依赖项列表。它以众所周知的方式提供元数据,从而为第三方客户端提供必要的帮助。
2、Spring Initializr模块
Spring Initializr具有以下模块:
- initializr-actuator: : 它提供有关项目生成的其他信息和统计信息。这是一个可选模块。
- initializr-bom: : 在此模块中, BOM 代表物料清单。在Spring Boot中,BOM是一种特殊的 POM ,用于控制项目依赖项的版本。它提供了一个中心位置来定义和更新这些版本。它提供了灵活性,可以在我们的模块中添加依赖项而无需担心版本。
在软件世界之外, BOM 是创建产品所需的零件,项目,组件和其他材料的列表。它说明了如何,如何和在何处收集所需材料。 - initializr-docs: : 它提供了文档。
- initializr-generator: : 这是一个核心项目生成库。
- initializr-generator-spring:
- initializr-generator-test: : 它提供了用于项目生成的测试基础结构。
- initializr-metadata: : 它为项目的各个方面提供了元数据基础结构。
- initializr-service-example : 它提供自定义实例。
- initializr-version-resolver: 是一个可选模块,用于从任意POM中提取版本号。
- initializr-web : 它为第三方客户端提供Web端点。
相关文章:
SpringBoot开发——初步了解SpringBoot
文章目录 一、SpringBoot简介 1、什么是Spring Boot2、Spring Boot的优点3、Spring Boot功能 二、Spring与Spring Boot对比三、Spring Boot与Spring MVC四、Spring Boot体系结构五、Springboot Initializr 1、Spring Initializr2、Spring Initializr模块 一、SpringBoot简介…...
双轴伺服电机驱动控制器AGV、AMR专用双伺服电机驱动控制器解决方案
工业机器人数控机床XY机械手双轴机器人堆垛机专用双轴伺服电机驱动控制器48V 14ARMS带有STO功能,隔离高压CAN/RS485/USB通讯支持编码器和霍尔输入 双伺服电机驱动控制器TMCM2611功能介绍 集成2个伺服电机的控制和驱动于一体供电电压48V,驱动电流14A RM…...
【VB语言】EXCEL中VB宏的应用
【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示:以下是本篇文章正文内容,下面案例可供参考 一、EXCEL-VB 1.实验过…...
Ubuntu添加桌面快捷方式
以idea为例 一. 背景 在ubuntu中,很多时候是自己解压的文件并没有桌面快捷方式,需要自己找到对应的目录的执行文件手动打开,很麻烦 而只需要在 /usr/share/applications 中创建自定义的desktop文件就能自动复制到桌面 二. 添加方法 创建desk…...
10G EPON光模块
一、10G EPON对称光模块 工作模式:上行突发接收、下行连续发射。 工作原理:当需要发送信号时,系统信号通过光模块的电接口把信号传送到驱动芯片,芯片处理后,驱动激光器发出调制光信号,经光纤发到远端&…...
Elasticsearch+Logstash+Kibana可视化集群部署
文章目录 1.组件介绍简述2.集群规划3.Es组件部署4.Logstash组件部署5.Kibana组件部署6.Kibana的基础使用 1.组件介绍简述 Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。 Logsta…...
基于CanMV IDE 开发软件对K210图像识别模块的开发
简介 CanMV IDE 是一款专为 K210 芯片设计的图形识别 Python 软件,它提供了强大的功能,帮助开发者轻松实现基于 K210 芯片的图形识别应用。无论你是初学者还是经验丰富的开发者,CanMV IDE 都能为你提供便捷的开发环境和丰富的资源。 硬件资…...
win11系统 Docker Desktop提示Docker Engine stopped解决全过程记录
DockerDesktop安装指南以及Windows下WSL2和 Hyper-V相关问题追查 【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 本篇文章主要记录Docker Desktop安装和使用时出现的问题及解决方法,以及后续使用夜神模拟器,关闭了Hyper-V时&am…...
工作室如何实现一机一IP
对于工作室而言,多开游戏账号却是其运营模式的核心需求。他们通过大量囤积金币、资源,再将其变现来获取利润。在这种运营模式下,账号数量直接关系到工作室的收益,所以解决 IP 问题就成了手游工作室发展道路上的首要难题࿰…...
WEB安全--SQL注入--二次注入
一、原理: 二次注入的关键在于攻击者的输入并不立即执行,而是经过某些存储或处理后,在后续某个步骤中再触发注入攻击 二、示例: 2.1、sqli-labs-master/less-24: admin# 第一次在网页注册账号和密码时没有漏洞&#x…...
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践 本文将基于提供的代码示例,详细介绍如何在一个Java微服务项目中使用Spring Security、JWT和Spring Cloud Gateway来构建一个高效且安全的微服务体系,并整合性能优…...
Spring Boot 动态数据源实操指南
在实际开发中,我们经常会遇到需要动态切换数据源的场景,比如多租户系统、读写分离、分库分表等。Spring Boot 提供了灵活的配置方式,结合 AbstractRoutingDataSource 可以轻松实现动态数据源切换。本文将带你一步步实现 Spring Boot 动态数据…...
HBase高级技巧:解锁更强大的数据处理能力
HBase高级技巧:解锁更强大的数据处理能力 嘿,小伙伴们!在掌握了HBase的基本操作之后,今天我们将深入探讨一些HBase的高级技巧。这些技巧将帮助你在面对复杂的数据处理需求时更加得心应手,进一步提升系统的性能和可靠性…...
【进阶】JVM篇
为什么学习jvm 1、面试的需要 学过java的程序员对jvm应该不陌生,程序员为什么要学习jvm呢?其实不懂jvm也可以照样写出优质的代码,但是不懂jvm会被大厂的面试官虐的体无完肤。 2、高级程序员需要了解 jvm作用 jvm负责把编译后的字节码转换…...
DeepSeek官方推荐的AI集成系统
DeepSeek模型虽然强大先进,但是模型相当于大脑,再聪明的大脑如果没有输入输出以及执行工具也白搭,所以需要有配套工具才能让模型发挥最大的作用。下面是一个典型AI Agent架构图,包含核心组件与数据流转关系: #mermaid-…...
【动态规划篇】:当回文串遇上动态规划--如何用二维DP“折叠”字符串?
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:动态规划篇–CSDN博客 文章目录 一.回文串类DP核心思想(判断所有子串是否是回文…...
JENKINS(全面)
一.linux系统中JENKINS的安装 注意:安装jenkins需要安装jdk,而且具体版本的jenkins有相对应的jdk版本。可参考以下链接。 Redhat Jenkins 软件包https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/r…...
Promise详解大全:介绍、九个方法使用和区别、返回值详解
Promise的介绍 Promise是异步编程的一种解决方案,它的构造函数是同步执行的,then 方法是异步执行的,所以Promise创建后里面的函数会立即执行,构造函数中的resolve和reject只有第一次执行有效,,也就是说Pro…...
尚硅谷爬虫note004
一、urllib库 1. python自带,无需安装 # _*_ coding : utf-8 _*_ # Time : 2025/2/11 09:39 # Author : 20250206-里奥 # File : demo14_urllib # Project : PythonProject10-14#导入urllib.request import urllib.request#使用urllib获取百度首页源码 #1.定义一…...
Debezium系列之:时区转换器,时间戳字段转换到指定时区
Debezium系列之:时区转换器,时间戳字段转换到指定时区 示例:基本配置应用TimezoneConverter SMT的效果示例:高级配置配置选项当Debezium发出事件记录时,记录中的时间戳字段的时区值可能会有所不同,这取决于数据源的类型和配置。为了在数据处理管道和应用程序中保持数据一…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
