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

SpringBoot快速使用

        一些名词的碎碎念:

        1> 俩种网络应用设计模式

        C/S 客户端/服务器

        B/S 浏览器/服务器

        俩者对比:

        2> 集群和分布式的概念

        集群: 

        分布式:

例子:

        一个公司有一个人身兼多职

        集群: 招聘N个和上面这个人一样身兼多职

        分布式: 招聘N个人,分担上面这个人的工作,进行工作的拆分.

        工作中常常把集群和分布式统称为分布式.

1. Maven的配置

        1.1 认识Maven

                概念: Maven是一种项目管理工具.基于POM(Project Object Model,项目对象模型)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工作软件.

                简而言之: Maven就是一个项目管理的工具,我们直接通过pom.xml配置文件把jar包坐标放进去,就可以获得并使用jar包了,不必手动去添加.

                特点:

                        1> 项目构建

                        2> 项目依赖

        1.2 配置Maven

                1> 环境准备:

                        idea

                        社区版: 2021.1-2022.1.4

                        专业版: 没有要求 

        如果个⼈电脑安装的idea不在这个范围,需要卸载重新安装(下载之前一定要删除干净).Idea卸载参考: https://blog.csdn.net/qq_19072921/article/details/126408402

                我们这里jdk使用的是17

               2> 配置maven国内源:

        因为中央仓库在国外,所以下载起来会⽐较慢,所以咱们选择借助国内⼀些公开的远程仓库来下载资源接下来介绍,如何设置国内源.
seting.xml的链接: https://pan.baidu.com/s/1bLLO1w4bbvZw-sNNdJ6xmg 提取码: ri47 

                

如果你已经有了xml,那么就添加镜像就可以了

打开settings.xml,在mirrors节点上,添加内容如下:
<mirror> <id>aliyunmaven</id>

<mirrorOf>central</mirrorOf> <name>阿⾥云公共仓库</name>

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

</mirror>

         刚刚的配置只会针对当前项目进行生效,我们为了让后续项目也生效,我们就需要重新设置一下新项目的Settings.

        

注意(一定要点击apply,再点击OK)

                3> 安装Maven Help插件

        当项⽬⽐较复杂时,我们就会有Jar包冲突的问题,这时候就需要去解决依赖冲突.解决冲突之前,需要先找到冲突,我们可以使⽤Maven Help插件来观察包和包之间的依赖关系(后续会演示).

        完成上述三个步骤,你的Maven就差不多配置好了.接下来我会介绍maven怎么用

        1.3  maven的核心功能介绍

                1> 项目构建

        Maven提供了标准的,跨平台(Linux,Windows,MacOS等)的⾃动化项⽬构建⽅式当我们开发了⼀个项⽬之后,代码需要经过编译测试打包发布等流程每次代码的修改都需要经过这些流程如果代码反复调试修改这个流程就需要反复进⾏就显得特别⿇烦⽽Maven给我们提供了⼀套简单的命令来完成项⽬的构建.

        

        比如我们直接可以点击package进行打包操作

        此时我们再target里面就能找到我们项目打好的jar包了

                

一些概念碎碎念:

打包就是把所有的class⽂件,全部放在⼀起,打成jar包或者war包

jar包和war包都是⼀种压缩⽂件

jar包就是把开发⼈员已经写好的⼀些代码进⾏打包.打好的jar包就可以引⼊到其他项⽬中,也可以直接使⽤这些jar包中的类和属性.另外也可以打成可执⾏jar包,这样的包就可以通过java-jar命令来执⾏war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西,通常⽤于⽹站.

                2> 依赖管理

        上⾯说到,Maven是⼀个项⽬管理⼯具,通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包获取的jar包,其实就是依赖.pom.xml就是maven的配置⽂件,⽤以描述项⽬的各种信息
        依赖配置

依赖: 指当前项⽬运⾏所需要的jar包.

⽐如前⾯学习JDBC时,我们需要⼿动下载mysql-connector-java的包.并且添加到项⽬中.

      

        如果使⽤Maven,我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了
        我们去中央仓库里(后续会介绍仓库的知识)面寻找我们要导入的jar包.复制坐标放进去即可

<dependencies>

<!--⾥⾯放置项⽬的依赖坐标, 可为多个 -->

</dependencies>

        1> 在pom⽂件 <dependencies> 标签内,添加依赖坐标

 <dependency>

        <groupId>com.mysql</groupId>

        <artifactId>mysql-connector-j</artifactId>

        <version>8.3.0</version>

</dependency>

        2> 点击刷新按钮,引⼊新加⼊的依赖jar包

        依赖传递

        早期我们没有使⽤maven时,向项⽬中添加依赖的jar包,需要把所有的jar包都复制到项⽬⼯程下.⽐如A依赖B,B依赖C,那么A项⽬引⼊B的同时,也需要引⼊C,如果我们⼿动管理这个依赖,这个过程就会⽐较⿇烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的.

比如: 我们要吃⽕锅,需要有锅,有调料,有⻝材,以及确认什么样的锅,什么样的⻝材.

去医院看病,需要带上以往的病历,检查结果,处⽅等,并且要确认带的资料是正确的,如果⽇期错了,或者患者错了,带少了,就需要回去重新拿.

        但使⽤maven的话,就可以避免管理所需依赖的关系。我们只需要在pom⽂件中,定义直接依赖就可以了,由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊.

比如: 吃⽕锅,现在我们可以点⼀个海底捞外卖,直接就把所有⻝材都送过来了,包括什么锅,配什么菜.

去医院看病,借助"互联⽹",实现了信息共享,只需要带上⾝份证,以往的病历和检查结果就都可以看到了.

        依赖排除

如果项⽬A不需要JarB,也可以通过排除依赖的⽅式来实现
例子:

<dependency>

        <groupId>org.springframework</groupId>

         <artifactId>spring-core</artifactId>

         <version>6.0.6</version>

<!--排除依赖-->

        <exclusions>

                <exclusion> <artifactId>spring-jcl</artifactId>                

         <groupId>org.springframework</groupId>

                </exclusion>

         </exclusions>

</dependency>

         maven还有⼀些功能是依赖调解,可选依赖等

        依赖调解: 当项⽬中的依赖存在依赖冲突时,例如存在这样的依赖:

                A->B->C->X(1.0)

                A->D->X(2.0)

Maven会采⽤最短路径优先的原则去选择依赖,这⾥2的依赖路径更短,所以会选择X(2.0),当然我们也可以选择指定某个依赖的版本

        使用Maven Help去处理依赖冲突

        当项⽬⽐较复杂时,我们就会有Jar包冲突的问题,这时候就需要去解决依赖冲突.解决冲突之前,需要先找到冲突,我们可以使⽤Maven Help插件来观察包和包之间的依赖关系.

        1.4 Maven仓库的介绍

        这个代码,我们称之为"坐标",也就是唯⼀的

        在Maven中,根据groupId、artifactId、version的配置,来唯⼀识别⼀个jar包,缺⼀不可.

当我们在pom⽂件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库⾥寻找Jar包,并把他下载下来,添加到项⽬中.这个Jar包下载的地⽅就称为仓库.

        相当于我们取快递,我们pom文件里面记录的就是我们的快递在快递站的哪个位置

        仓库:⽤于存储资源,管理各种jar包

        Maven的仓库分为俩种:

        1> 本地仓库: ⾃⼰计算机上的⼀个⽬录(⽤来存储jar包)


        当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包,下面就是我们本地仓库的地址

        maven下载jar包的顺序:

        2> 远程仓库:中央仓库(全球唯一),私有服务器,其他公共的...

                中央仓库: maven软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹.由Maven团队维护,全球唯⼀.

仓库地址:https://repo1.maven.org/maven2/

可以通过https://mvnrepository.com这个⽹站来查询并下载

我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求),也可以从中央仓库下载Jar包
查找Jar的坐标

1. 访问: https://mvnrepository.com/

2. 进⾏查找,⽐如mysql

这里注意我们下载的版本(所有要下载的通用)

        1.选择没有没有漏洞的

        2.选择次新版本的

        3.选择使用人数多的

                私服:⼀般由公司团队搭建的私有仓库.

私服属于某个公司,或者某个部⻔,往往需要⼀定权限.有了私服之后,Maven依赖下载的顺序⼜发⽣了变化

        maven下载jar包的顺序

2. SpringBoot的配置和创建第一个项目

        前置概念碎碎念

    在配置之前我们先了解一下Spring和Spring Boot的关系

        Spring 是一个开源的 Java 应用框架,旨在简化企业级应用开发。它提供了一个全面的编程和配置模型,用于构建基于 Java 的应用程序。但是Spring Framework(Spring 的核心)存在配置多,⼊⻔难的问题,Spring也意识到了这个问题,为了简化开发者的使⽤,从⽽创造性的推出了Spring Boot.

        比如:Spring类似火车.早期我们买票是需要去火车站线下买的的.现在就直接线上去12306(相当于Spring Boot)买就行(省了很多时间,更加方便,效率更高).SpringBoot的诞⽣是为了简化Spring程序开发的。

        我们再从封装的角度来理解:有共同的东西->封装起来 
        Spring Boot里面有很多东西已经封装起来了,就是把我们需要到处找,然后挨个下载的东西,直接给我封装起来了,下了Spring Boot就可以直接用.
        像12306,我们不仅可以买票,还可以定酒店,出租车,买保险,定外卖,只要用户用12306,在里面下单了,这个就可以发给相应的服务器显示出订单.

        2.1 SpringBoot的配置

        配置

           注意: 这里只介绍idea专业版怎么配置

        点击New Projiect,按照下面的图进行配置

        这里注意Spring Boot的版本号:

        3.X ->JDK17   2.X -> JDK8

搞好后,页面会弹出一个小框,记得点一下Load Maven Project(可能会加载很久)

        这样就创建好了

        认识各个文件

配置文件和创建时候的对应关系

         常见问题解决方式:

                1> 没有Maven选项

                项目名称右击,找到Add Framework Suport,然后添加Maven即可

                2> 插件下载失败

                1.确认自己是否使用国内源

                2.切换网络

                3.重新刷新Maven       

         3> build的插件下不下来(去中央仓库下载,记得和自己的SpringBoot版本号一致)

        启动程序

当8080端口被占用我们该如何解决:        

1> 关闭8080端口号

先查看谁占用了,再根据它的进程号去后台杀死它

去任务管理器找到这个进程号杀死进程

2> 修改端口号

        2.2 第一个项目的创建

        启动

        首先我先启动启动类,然后写自己的项目,最后在浏览器输入

        http://127.0.0.1:8080/(@RequestMapping里面写的东西),再点击回车即可

                原理

        小概念碎碎念:

        我们知道HTTP协议就是HTTP客⼾端和HTTP服务器之间的交互数据的格式.  Web服务器就是对HTTP协议进⾏封装,程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器,HTTP服务器,主要功能是提供⽹上信息浏览服务.
常⻅的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等
SpringBoot内置了Tomcat服务器,⽆需配置即可直接运⾏

        整个页面显示的流程:可以看出我们这个是典型的B/S

        2.3 常见的错误排查手段

        1. 主机拒绝房屋内链接请求

                解决方案:

                1> 服务器未启动(也就是启动类没有启动)大多数情况

                2> 如果IP是外网,端口号没有开放

        进入2之前我们先认识状态码

        200: 成功

        3XX:重定向

        4XX:客户端错误

        5XX:内部错误

        2. http状态码,资源不存在

                解决方案:

                1> 检查url路径(注意大小写)

                2> 检查代码的注解

        3.服务器内部错误

        解决方案:

        1> 去看日志(分段看)从下往上看(放在文本编辑器里面看)

相关文章:

SpringBoot快速使用

一些名词的碎碎念: 1> 俩种网络应用设计模式 C/S 客户端/服务器 B/S 浏览器/服务器 俩者对比: 2> 集群和分布式的概念 集群: 分布式: 例子: 一个公司有一个人身兼多职 集群: 招聘N个和上面这个人一样身兼多职 分布式: 招聘N个人,分担上面这个人的工作,进行工作的拆分. 工…...

【C语言实现:用队列模拟栈与用栈模拟队列(LeetCode 225 232)】

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…...

远程控制软件对比与使用推荐

远程控制软件对比与使用推荐 远程控制软件在现代工作环境中扮演着重要角色&#xff0c;无论是远程办公、技术支持、还是家庭成员之间的协助。以下是对几种常见远程控制软件的详细对比和推荐使用场景。 1. TeamViewer 特点 跨平台&#xff1a;支持Windows、macOS、Linux、iO…...

vue canvas 绘制选定区域 矩形框

客户那边文档相当的多&#xff0c;目前需要协助其将文档转为数据写入数据库&#xff0c;并与其他系统进行数据共享及建设&#xff0c;所以不得不搞一个识别的功能&#xff0c;用户上传PDF文档后&#xff0c;对于关键信息点进行识别入库&#xff01; 以下为核心代码&#xff0c…...

【SpringCloud】OpenFeign配置时间Decode

文章目录 1.自定义反序列化器2.配置类与自定义 ObjectMapper客户端 需求&#xff1a;OpenFeign配置自定义decode&#xff0c;解析http请求返回的时间字符串 1.自定义反序列化器 Date 自定义反序列化器 import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.j…...

Xerces-C,一个成熟的 C++ XML 解析库!

嗨&#xff0c;大家好&#xff01;我是一行。今天咱们来探索 Xerces-C&#xff0c;它可是 C里超棒的 XML 解析库哦&#xff01;能帮咱轻松处理 XML 数据&#xff0c;在很多数据交互、配置文件读取场景都超实用&#xff0c;快来一起学习使用它的妙招吧。 一、Xerces-C 是什么&am…...

6.2 MapReduce工作原理

MapReduce工作原理涉及将大数据集分割成小块并行处理。Map任务读取数据块并输出中间键值对&#xff0c;而Reduce任务则处理这些排序后的数据以生成最终结果。MapTask工作包括读取数据、应用Map函数、收集输出、内存溢出时写入磁盘以及可选的Combiner局部聚合。ReduceTask工作则…...

一次旧业务系统迁移收缩的经历

单位的一个业务系统&#xff0c;在几年前已经更换了。但旧的系统里面还有很多没有转移过来的数据&#xff0c;虽然普通用户不再需要用旧的系统&#xff0c;但相应部门的管理人员还需要在旧系统查询数据资料&#xff0c;这应该是旧系统向新系统迁移时&#xff0c;数据不彻底&…...

MVC配置文件及位置

配置文件位置 默认位置 WEB-INF目录下&#xff0c;文件名&#xff1a;<servlet-name>-servlet.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.…...

如何解决samba服务器共享文件夹不能粘贴文件

sudo vim /etc/samba/smb.conf在samba的配置文件中增加一个选项 writable yes重启Samba服务以使更改生效&#xff1a; sudo service smbd restart...

【中工开发者】鸿蒙商城app

这学期我学习了鸿蒙&#xff0c;想用鸿蒙做一个鸿蒙商城app&#xff0c;来展示一下。 项目环境搭建&#xff1a; 1.开发环境&#xff1a;DevEco Studio2.开发语言&#xff1a;ArkTS3.运行环境&#xff1a;Harmony NEXT base1 软件要求&#xff1a; DevEco Studio 5.0.0 Rel…...

(九)机器学习 - 多项式回归

多项式回归&#xff08;Polynomial Regression&#xff09;是一种回归分析方法&#xff0c;它将自变量 xx 和因变量 yy 之间的关系建模为 nn 次多项式。多项式回归的目的是找到一个 nn 次多项式函数&#xff0c;使得这个函数能够最好地拟合给定的数据点。 多项式回归的数学表达…...

Qt编写区位码gb2312、机内码、国标码————附带详细介绍和编码实现

文章目录 0 背景1 了解编码1.1 ASCII码1.2 机内码、国标码、区位码1.2.1 区位码1.2.2 国标码&#xff08;GB 2312-80&#xff09;1.2.3 汉字机内码&#xff08;GB 2312&#xff09; 1.3 GBK和GB2312的区别2 编码实现2.1 QString数据转QByteArray类型2.1.1 使用QTextCodec2.1.2 …...

linux网络编程 | c | epoll实现IO多路转接服务器

epoll实现IO多路转接服务器 可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 epoll实现IO多路转接服务器1.思路&功能核心思路 2.代码实现multi_epoll_sever.c运行图 1.思路&功能 **功能&#xff1a;**客…...

Source Insight的使用经验汇总

01-Add All"和“Add Tree”有何区别&#xff1f; 在 Source Insight 中&#xff0c;“Add All”和“Add Tree”是两种向项目&#xff08;Project&#xff09;中添加文件的操作选项&#xff0c;它们的区别在于处理文件和目录的方式不同&#xff1a; 1. Add All 范围&am…...

VSCode 报错:rust-analyzer requires glibc >= 2.28 in latest build

报错信息 /home/jake/.vscode-server-insiders/extensions/matklad.rust-analyzer-0.3.953/server/rust-analyzer: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.29 not found (required by /home/jake/.vscode-server-insiders/extensions/matklad.rust-analyzer-0.3.9…...

Android Link to Death 使用

Java侧&#xff1a; 【android学习】使用linkToDeath对AIDL双向死亡监听_unlinktodeath-CSDN博客 Native侧&#xff1a; Service端 using namespace android; class MyService :public IBinder::DeathRecipient{void MyService::binderDied(const wp<IBinder>& wh…...

【C++游记】string的使用和模拟实现

枫の个人主页 你不能改变过去&#xff0c;但你可以改变未来 算法/C/数据结构/C Hello&#xff0c;这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕&#xff0c;我们继续来学习C的内容呀。C是接近底层有比较经典的语言&#xff0c;因此学习起来注定枯燥无味&#xf…...

DockerUI info存在未授权访问漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

SQL,查询每天最接近指定时间的记录

Oracle 数据库的某表有一列是日期时间类型&#xff0c;每天对应多条数据&#xff1a; td1.1.2024 08:08:0811.1.2024 10:10:1021.1.2024 15:15:1531.1.2024 20:20:2042.1.2024 09:09:0952.1.2024 12:12:1262.1.2024 16:16:16712.12.2024 16:16:168 现在要从每天找出两条记录&…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...

C++课设:实现本地留言板系统(支持留言、搜索、标签、加密等)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、项目功能概览与亮点分析1. 核心功能…...