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

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...