springBoot使用
1.什么是SpringBoot
- SpringBoot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。
- SpringBoot是伴随Spring4.0的时候发布的一个框架。
- SpringBoot用来简化Spring应用的开发,约定大于配置,去繁从简。
从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。它使用“约定优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。
框架特点
- 创建独立的spring应用。
- 嵌入Tomcat、Jetty,Undertow而且不需要部署他们。
- 提供的“starters"来简化Maven配置。
- 尽可能自动配置spring应用,绝对没有代码生成和XML配置需求。
- 提供生产指标,健壮检查和外部化配置。
优缺点
优点
- 快速创建独立运行的Spring项目以及主流框架集成
- 使用嵌入式Servlet容器,应用无需打包成war包
- starters自动依赖于版本控制
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置xml,没有代码生成,开箱即用
- 准生产化环境的运行时应用监控
缺点
- SpringBoot是spring的一个再封装,如果不了解spring,那么学Springboot很费劲。
- 入门易,精通难,它没有增强spring的功能,只是帮助我们做了很多本需要我们自己做的配置整合工作。
微服务
将子系统拆成一个一个的jar包运行就是微服务。Spring Boot算是微服务开发的入门级框架。
微服务架构示例图

- 单体应用:ALL IN ONE,以前的架构风格,所有的东西都写在一个应用里面。
- 微服务:一个应用是一组小型服务。每一个服务通过http的方式进行互通,每个功能元素最终都是一个可独立替换和独立升级的软件单元。
能用单体应用开发的应用,尽量不用微服务。
- 比如个人开发项目单体应用足够了,微服务成本比较大,一般企业级应用用的比较多。
- 微服务就是一种架构风格,掌握还是必要的。
2.简单案例
创建Springboot项目

选择需要的依赖:配置依赖有详细说明,因为还要一些其他的依赖,这里不配置也行,直接在pom.xml配置

配置依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.xygalaxy</groupId><artifactId>SpringBoot-Study</artifactId><version>0.0.1-SNAPSHOT</version><name>SpringBoot-Study</name><description>SpringBoot-Study</description><properties><java.version>17</java.version></properties><dependencies><!-- Spring Web依赖,主要提供SpringMVC相关 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- springboot依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- springboot测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>RELEASE</version><scope>compile</scope></dependency><!-- MybatisPlus依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version></dependency><!-- 连接数据库依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.34</version></dependency><!-- lombok简化实体 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>16</source><target>16</target></configuration></plugin></plugins></build></project>
MVC分层
创建实体类
@Data
@TableName("student")
public class StudentPO {@TableId(value = "id",type = IdType.ASSIGN_ID)private Long id;@TableField(value = "name")private String name;@TableField(value = "age")private Integer age;@TableField(value = "email")private String email;@TableField(value = "sex")private String sex;@TableField(value = "version")@Versionprivate Integer version;@TableField("is_delete")@TableLogic(value = "0",delval = "1")private Integer isDelete = 0;
}
创建Mapper接口
@Mapper
public interface StudentMapper extends BaseMapper<StudentPO> {}
创建Service接口和实现类
接口
public interface IStudentService extends IService<StudentPO> {}
实现类
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, StudentPO> implements IStudentService {}
创建Controller
@RestController
@RequestMapping("/student")
public class StudentController {@Autowiredprivate StudentServiceImpl studentService;@RequestMapping("/list")public List<StudentPO> userList(){return studentService.list();}}
启动类配置
@SpringBootApplication
@MapperScan("com.test.mapper")
public class SpringBootStudyApplication {public static void main(String[] args) {SpringApplication.run(SpringBootStudyApplication.class, args);}}
application.yml配置
主要配置数据库和开启MyBatis-Plus的日志功能
# 配置访问端口
server:port: 8080# 数据源配置
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8username: rootpassword: 123456# 开启日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:table-prefix: test.
测试
启动类运行,浏览器访问
http://localhost:8080/student/list
// 或者
http://127.0.0.1:8080/student/list
3.配置文件
全局配置文件
SpringBoot的有两种格式的全局配置文件,使用任何一个功能都是一样的,配置文件名是固定的(放在resources目录下)。
- application.properties:默认Spring initializr默认自动生成的配置文件,也是我们属性的文件格式。
- application.yml:除了properties文件可以做为SpringBoot的配置文件以外,SpringBoot还支持yaml配置文件。
配置文件的作用
修改SpringBoot项目配置的默认值。
- SpringBoot在底层都给我们自动配置好了默认值,如果想改就需要使用配置文件修改配置即可。
- 约定大于配置的体现就是SpringBoot已经帮我们配置了所需的配置默认值,只是我们不想用默认值可以通过配置文件修改。
properties配置语法
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
YAML语法
- YAML(又称为 “Yet Another Markup Language”)是一种可读的数据序列化格式。它的设计目标是简洁、易读、易于编写,并可以被各种编程语言解析和生成。
- YAML不是标记语言,它的主要拥堵是作为配置文件和数据传输的格式。
- YAML的文件通常使用“.yaml"或".yml"的文件扩展名来标识文件的格式。这两种扩展名没有实质的差别,只是简单的表示文件使用YAML格式进行编写。
语法格式
- 基本格式: key: value 表示一对键值对,注意:键值对中的值前面必须有空格,多少个无所谓,但必须有。
- 靠键左对齐来区分层级关系,也就是说凡是左对齐的键值对都是一个层次的
- 大小写敏感,严格区分大小写
- #进行注释
值写法
- 字符串默认不用引号引起来。
- 对象或Map的表示方法有两种,一种是换行+缩进,另一种是利用大括号
- 数组或List集合也有两种表达方式
YAML案例
等价于properties配置文件配置数据库
# 数据源配置
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf8username: rootpassword: 123456
相关文章:
springBoot使用
1.什么是SpringBoot SpringBoot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。SpringBoot是伴随Spring4.0的时候发布的一个框架。SpringBoot用来简化Spring应用的开发,约定大于配置,去繁从简。 从本质上来说ÿ…...
DS图(中)(19)
文章目录 前言一、图的遍历广度优先遍历深度优先遍历 二、最小生成树Kruskal算法Prim算法两种方法对比 总结 前言 承上启下,我们来学习下图的中篇!!! 一、图的遍历 图的遍历指的是遍历图中的顶点,主要有 广度优先遍历 …...
Vue Dom截图插件,截图转Base64 html2canvas
安装插件 npm install html2canvas --save插件使用 <template><div style"padding: 10px;"><div ref"imageTofile" class"box">发生什么事了</div><button click"toImage" style"margin: 10px;&quo…...
Unity3D仿星露谷物语开发小结1
1、Cinemachine的作用及使用方法 (1)作用 控制Camera的模块,实现摄像机的复杂控制,比如角色的跟随,限制Camera的区域 (2)使用方法 在已有Main Camera的情况下, 通过【GameObject -&…...
graylog初体验
最近graylog比较火,部署了一个来测试下,看下后续能不能代替目前占用资源比较多的elk,目前未对graylog性能进行深入测试,只是简单体验了下,graylog的UI比较简陋,但是在报警以及权限方面优于ELK,整…...
15.PPT:文静-云计算行业发展【29】
目录 NO123 NO345 NO6 NO78 NO9/10/11/12 NO123 设计→幻灯片大小→自定义幻灯片大小→ 全屏显示(16:9)→最大化 NO345 SmartArt 主题颜色2/6/9:形状样式:样式 加大行距加宽间距 NO6 NO78 设计→设置背景…...
高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案
目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行(下载) 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…...
MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致
1)查询到的方法如下: // 假设你要选中第 2 行(索引从 0 开始) int nItem 1; // 取消所有其他选中项 m_ListCtrl.SetItemState(-1, 0, LVIS_SELECTED); // 设置选中状态,并确保它具有焦点 m_ListCtrl.SetItemStat…...
一文读懂:TCP网络拥塞的应对策略与方案
TCP(传输控制协议)是互联网中广泛使用的可靠传输协议,它通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制确保数据的可靠传输。然而,在网络环境中,由于多个主机共享网络资源,网络拥塞成为了一个…...
深度整理总结MySQL——子查询的工作原理
子查询的工作原理 前言为什么开发人员喜欢写子查询查询重写条件化简移除不必要的括号常量传递(constant_propagation)移除没用的条件(trivial_condition_removal)HAVING子句和WHERE子句的合并 常量表检测外连接消除 子查询子查询语…...
20240824 美团 笔试
文章目录 1、单选题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:硬件开发工程师(嵌入式系统软件开发方向) 题型:20 道单选题,2 道编程题题 1、单选题 1.1 C 语言中,如果输入整数 v 是 2 的幂,下面表达式中哪个会返…...
Windows图形界面(GUI)-QT-C/C++ - QT 文本编辑控件详解
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 概述 1. QLineEdit 1.1 特点 1.2 属性 1.3 常用方法 1.4 拓展应用 2. QTextEdit 2.1 特点 2.2 属性 2.3 常用方法 2.4 拓展应用 3. QPlainTextEdit 3.1 特点 3.2 属性 3.3…...
IDEA中Resolving Maven dependencies卡着不动解决方案
一、修改settings.xml Maven配置阿里云仓库主要通过修改Maven的settings.xml文件来实现。以下是具体步骤: 1、找到settings.xml文件: 通常位于Maven安装目录下的conf文件夹中,或者在用户目录下的.m2文件夹中(如果用户自定义了settings.xml的位置)。 2、编辑se…...
go数据结构学习笔记
本博文较为完整的实现了go的链表、栈,队列,树,排序,链表包括顺序链表,双向链表,循环链表,队列是循环队列,排序包含冒牌、选择 1.链表 1.1 顺序链表 type LNode struct {data intn…...
【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)
【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解) 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么?什么是k8s(Ku…...
Google地图瓦片爬虫——进阶版
紧接上一篇——Google地图瓦片爬虫 clash节点自动切换 为了防止一个IP地址访问频率过快问题,自动切换clash的节点 def change_node(is_stop):while True:_r requests.get("http://127.0.0.1:11053/proxies", headersclash_headers, verifyFalse)# 这里…...
免费windows pdf编辑工具
Epdf(完全免费) 作者:不染心 时间:2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器,目前仍在开发中。它提供了一系列实用的命令行选项,方便用户对 PDF …...
解锁C#数据校验:从基础到实战的进阶之路
一、引言:数据校验为何如此重要? 在软件开发的广袤领域中,数据校验宛如一座坚固的堡垒,守护着系统的稳定与安全。它是确保数据质量的关键防线,能有效避免错误数据的流入,进而提升系统的整体性能和可靠性。…...
Redis的通用命令
⭐️前言⭐️ 本文主要介绍Redis的通用命令 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主日常练习代码均已上传GitHub 📍内容导…...
设计模式六大原则和单例模式
设计模式 目的 实现可重用解决方案,构筑易维护、可扩展的软件系统。 六大原则 单一职责: 类的职责单一,一个方法做一件事。 开闭原则: 拓展开放,修改关闭。 里氏替换: 父类能出现的地方,子…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...


