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

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&amp;useUnicode=true&amp;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&amp;useUnicode=true&amp;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&amp;useUnicode=true&amp;characterEncoding=utf8username: rootpassword: 123456

相关文章:

springBoot使用

1.什么是SpringBoot SpringBoot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。SpringBoot是伴随Spring4.0的时候发布的一个框架。SpringBoot用来简化Spring应用的开发&#xff0c;约定大于配置&#xff0c;去繁从简。 从本质上来说&#xff…...

DS图(中)(19)

文章目录 前言一、图的遍历广度优先遍历深度优先遍历 二、最小生成树Kruskal算法Prim算法两种方法对比 总结 前言 承上启下&#xff0c;我们来学习下图的中篇&#xff01;&#xff01;&#xff01; 一、图的遍历 图的遍历指的是遍历图中的顶点&#xff0c;主要有 广度优先遍历 …...

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的作用及使用方法 &#xff08;1&#xff09;作用 控制Camera的模块&#xff0c;实现摄像机的复杂控制&#xff0c;比如角色的跟随&#xff0c;限制Camera的区域 &#xff08;2&#xff09;使用方法 在已有Main Camera的情况下&#xff0c; 通过【GameObject -&…...

graylog初体验

最近graylog比较火&#xff0c;部署了一个来测试下&#xff0c;看下后续能不能代替目前占用资源比较多的elk&#xff0c;目前未对graylog性能进行深入测试&#xff0c;只是简单体验了下&#xff0c;graylog的UI比较简陋&#xff0c;但是在报警以及权限方面优于ELK&#xff0c;整…...

15.PPT:文静-云计算行业发展【29】

目录 NO123​ NO345​ NO6​ NO78 NO9/10/11/12​ NO123 设计→幻灯片大小→自定义幻灯片大小→ 全屏显示&#xff08;16&#xff1a;9&#xff09;→最大化 NO345 SmartArt 主题颜色2/6/9&#xff1a;形状样式&#xff1a;样式 加大行距加宽间距 NO6 NO78 设计→设置背景…...

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行&#xff08;下载&#xff09; 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…...

MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致

1&#xff09;查询到的方法如下&#xff1a; // 假设你要选中第 2 行&#xff08;索引从 0 开始&#xff09; int nItem 1; // 取消所有其他选中项 m_ListCtrl.SetItemState(-1, 0, LVIS_SELECTED); // 设置选中状态&#xff0c;并确保它具有焦点 m_ListCtrl.SetItemStat…...

一文读懂:TCP网络拥塞的应对策略与方案

TCP&#xff08;传输控制协议&#xff09;是互联网中广泛使用的可靠传输协议&#xff0c;它通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制确保数据的可靠传输。然而&#xff0c;在网络环境中&#xff0c;由于多个主机共享网络资源&#xff0c;网络拥塞成为了一个…...

深度整理总结MySQL——子查询的工作原理

子查询的工作原理 前言为什么开发人员喜欢写子查询查询重写条件化简移除不必要的括号常量传递&#xff08;constant_propagation&#xff09;移除没用的条件&#xff08;trivial_condition_removal&#xff09;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的链表、栈&#xff0c;队列&#xff0c;树&#xff0c;排序&#xff0c;链表包括顺序链表&#xff0c;双向链表&#xff0c;循环链表&#xff0c;队列是循环队列&#xff0c;排序包含冒牌、选择 1.链表 1.1 顺序链表 type LNode struct {data intn…...

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)

【后端开发】系统设计101——Devops&#xff0c;Git与CICD&#xff0c;云服务与云原生&#xff0c;Linux&#xff0c;安全性&#xff0c;案例研究&#xff08;30张图详解&#xff09; 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么&#xff1f;什么是k8s&#xff08;Ku…...

Google地图瓦片爬虫——进阶版

紧接上一篇——Google地图瓦片爬虫 clash节点自动切换 为了防止一个IP地址访问频率过快问题&#xff0c;自动切换clash的节点 def change_node(is_stop):while True:_r requests.get("http://127.0.0.1:11053/proxies", headersclash_headers, verifyFalse)# 这里…...

免费windows pdf编辑工具

Epdf&#xff08;完全免费&#xff09; 作者&#xff1a;不染心 时间&#xff1a;2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器&#xff0c;目前仍在开发中。它提供了一系列实用的命令行选项&#xff0c;方便用户对 PDF …...

解锁C#数据校验:从基础到实战的进阶之路

一、引言&#xff1a;数据校验为何如此重要&#xff1f; 在软件开发的广袤领域中&#xff0c;数据校验宛如一座坚固的堡垒&#xff0c;守护着系统的稳定与安全。它是确保数据质量的关键防线&#xff0c;能有效避免错误数据的流入&#xff0c;进而提升系统的整体性能和可靠性。…...

Redis的通用命令

⭐️前言⭐️ 本文主要介绍Redis的通用命令 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHub &#x1f4cd;内容导…...

设计模式六大原则和单例模式

设计模式 目的 实现可重用解决方案&#xff0c;构筑易维护、可扩展的软件系统。 六大原则 单一职责&#xff1a; 类的职责单一&#xff0c;一个方法做一件事。 开闭原则&#xff1a; 拓展开放&#xff0c;修改关闭。 里氏替换&#xff1a; 父类能出现的地方&#xff0c;子…...

【k8s】k8s集群搭建

k8s集群搭建 一、环境准备1.1 集群类型1.2 安装方式1.3 主机规划1.4 环境配置1.4.1 说明1.4.2 初始化1.4.3 关闭防火墙和禁止防火墙开机启动1.4.4 设置主机名1.4.5 主机名解析1.4.6 时间同步1.4.7 关闭selinux1.4.8 关闭swap分区1.4.9 将桥接的IPv4流量传递到iptables的链1.4.1…...

中医的十问歌和脉象分类

中医核心理论框架如下 诊断技术如下 本文主要介绍问诊和切诊。 十问歌的“十”是虚指&#xff0c;实际包含12个核心问题&#xff0c;脉象28种中常见仅10余种&#xff0c;重点解释脉诊的物理本质&#xff08;血流动力学触觉感知&#xff09; 以下是中医十问歌的完整内容及脉…...

Reactor和Proactor

reactor的重要组件包括&#xff1a;Event事件、Reactor反应堆、Demultiplex事件分发器、Eventhandler事件处理器。...

C语言的全称:(25/6/6)

C语言&#xff0c;全称为"C Programming Language"&#xff08;C程序设计语言&#xff09;&#xff0c;是一种广泛使用的计算机编程语言。它是由Dennis Ritchie于1972年在贝尔实验室设计的&#xff0c;继承了B语言的许多思想&#xff0c;并加入了数据类型的概念及其他…...

【时时三省】(C语言基础)局部变量和全局变量

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 以前所见到的程序大多数是一个程序只包含一个main函数&#xff0c;变量是在函数的开头处定义的。这些变量在本函数范围内有效&#xff0c;即在本函数开头定义的变量&#xff0c;在本函数中可…...

AOP实现Restful接口操作日志入表方案

文章目录 前言一、基础资源配置1.操作日志基本表[base_operation_log] 见附录1。2.操作日志扩展表[base_operation_log_ext] 见附录2。3.定义接口操作系统日志DTO&#xff1a;OptLogDTO4.定义操作日志注解类WebLog5.定义操作日志Aspect切面类SysLogAspect6.定义异步监听日志事件…...

VR视频制作有哪些流程?

VR视频制作流程知识 VR视频制作&#xff0c;作为融合了创意与技术的复杂制作过程&#xff0c;涵盖从初步策划到最终呈现的多个环节。在这个过程中&#xff0c;我们可以结合众趣科技的产品&#xff0c;解析每一环节的实现与优化&#xff0c;揭示背后的奥秘。 VR视频制作有哪些…...

某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量

要计算每日电量&#xff0c;需处理电表清零的情况。以下是针对不同数据库的解决方案&#xff1a; 方法思路 识别清零点&#xff1a;通过比较当前值与前一个值&#xff0c;若当前值明显变小&#xff08;如小于前值的10%&#xff09;&#xff0c;则视为清零。分段累计&#xff…...

高效绘制业务流程图!专业模板免费下载

在复杂的业务流程管理中&#xff0c;可视化工具已成为提升效能的核心基础设施。为助力开发者、项目经理及业务架构师高效落地流程标准化&#xff0c;本文将为你精选5套开箱即用的专业流程图模板。这些模板覆盖跨部门协作、电商订单、客户服务等高频场景&#xff0c;具备以下核心…...

大模型编程助手-Cline

官网&#xff1a; https://cline.bot/ Cline 是一款深度集成在 Visual Studio Code&#xff08;VSCode&#xff09; 中的开源 AI 编程助手插件&#xff0c;旨在通过结合大语言模型&#xff08;如 Claude 3.5 Sonnet、DeepSeek V3、Google Gemini 等&#xff09;和工具链&#…...