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> 去看日志(分段看)从下往上看(放在文本编辑器里面看)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果公司即将为iPhone和智能家居改用自主研发的蓝牙和Wi-Fi芯片

美股快讯&#xff1a;苹果公司即将为iPhone和智能家居改用自主研发的蓝牙和Wi-Fi芯片 苹果公司计划从明年开始在其设备上改用国产芯片进行蓝牙和Wi-Fi连接&#xff0c;此举将逐步淘汰目前由博通提供的部分部件。这种代号为Proxima的芯片已经开发了数年&#xff0c;现在计划用于…

快速理解分布式事务Seate基本知识

Seata是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式&#xff0c;为用户打造一站式的分布式解决方案。 一.Seate的三大角色 在 Seata 的架构中&#xff0c;一共有三个角色&#xff1a;…

前端项目初始化搭建(二)

一、使用 Vite 创建 Vue 3 TypeScript 项目 PS E:\web\cursor-project\web> npm create vitelatest yf-blog -- --template vue-ts> npx > create-vite yf-blog --template vue-tsScaffolding project in E:\web\cursor-project\web\yf-blog...Done. Now run:cd yf-…

多模态大模型(二)——用Transformer Encoder和Decoder的方法(BLIP、CoCa、BEiTv3)

文章目录 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 理解、生成我都要&#xff0c;一个很有效的、根据图片生成caption的工具1. BLIP的研究动机2. BLIP的模型结构3. CapFilt Model4. BLIP的训练过程 CoCa: C…

【理想汽车中科院】基于模仿学习的端到端自动驾驶数据缩放规律

论文: https://arxiv.org/pdf/2412.02689 项目: https://github.com/ucaszyp/Driving-Scaling-Law 0. 摘要 端到端自动驾驶范式因其可扩展性而最近吸引了大量关注。然而&#xff0c;现有方法受到现实世界数据规模有限的制约&#xff0c;这阻碍了对端到端自动驾驶相关扩展规律…

【工具介绍】可以批量查看LableMe标注的图像文件信息~

在图像处理和计算机视觉领域&#xff0c;LabelMe是一个广泛使用的图像标注工具&#xff0c;它帮助我们对图像中的物体进行精确的标注。但是&#xff0c;当标注完成后&#xff0c;我们常常需要一个工具来批量查看这些标注信息。 今天&#xff0c;我要介绍的这款exe程序&#xf…

链式栈的实现及其应用

目录 一、链式栈结构模型 二、链式栈的实现 2.1创建 2.2压栈 2.3出栈 2.4判断栈是否为空 2.5查看栈顶 2.6释放栈 三、应用 链式栈实际上就是基于链表&#xff0c;压栈和弹栈可分别看作头插和头删&#xff0c;链表尾部就是栈底&#xff0c;头指针就是栈顶指针 一、链式…

day12 接口测试 ——入门→精通→实战(1)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 1、接口测试分类 1.1 内部接口&#xff1a; 1.2 外部接口&#xff1a; 2、目前接口架构设计 2.1、基于SOAP架构&#xff0c; 2.2、基于RPC架构&#xff0c; 2.3、基于RestFul架构&#xff0c; 2.3.1…

程序的调试

一名优秀的程序员也是一名出色的侦探&#xff0c;每一次调试都是尝试破案的过程 目录 前言 一、什么是调试&#xff1f; 二、调试 1.调试是什么 2.基本步骤 三、调试注意事项 1.怎么写出易于调试的代码 assert(断言) const 2.常见错误 总结 前言 主要是怎么调试&#xff0c;调…

FPGA实现GTP光口数据回环传输,基于Aurora 8b/10b编解码架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案 3、工程详细设计方案工程设计原理框图用户数据发送模块基于GTP高速接口的数据回环传输架构GTP IP 简介GTP 基本结构GTP 发送和接收…

25.DDD数量关系

学习视频来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 关系型数据库的数量关系领域模型的数量关系实现聚合数量关系聚合内聚合间具体说明代码 数量关系是本质吗&#xff1f;领域对象之…

每天40分玩转Django:Django视图和URL

Django视图和URL 一、课程概述 学习项目具体内容预计用时视图基础函数视图、类视图、视图装饰器90分钟URL配置URL模式、路由系统、命名URL60分钟请求处理请求对象、响应对象、中间件90分钟 二、视图基础 2.1 函数视图 # blog/views.py from django.shortcuts import render…

语言模型(序列模型)

终于快要毕业了&#xff0c;乘着还在还在研究室&#xff0c;把最后一章sequence模型也学完吧。 Sequence Model 一&#xff1a;基础知识1&#xff1a;符号的定义2&#xff1a;词典(Vocabulary) 与编码(Encoding) 二&#xff1a;RNN(Recurrent Neural Networks) 循环神经网络1&…

【自然语言处理与大模型】使用llama.cpp将HF格式大模型转换为GGUF格式

llama.cpp的主要目标是在本地和云端的各种硬件上以最小的设置和最先进的性能实现LLM推理。是一个专为大型语言模型&#xff08;LLM&#xff09;设计的高性能推理框架&#xff0c;完全使用C和C编写&#xff0c;没有外部依赖&#xff0c;这使得它可以很容易地被移植到不同的操作系…

npm : 无法加载文件 D:\nodejs\npm.ps1

问题描述 npm run serve 启动一个Vue项目&#xff0c;报错如下&#xff1a; npm : 无法加载文件 D:\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…

线程池+线程安全+常见锁

目录 一、线程池1、日志与策略模式2、线程池设计3、线程安全的单例模式&#xff08;1&#xff09;单例模式的特点&#xff08;2&#xff09;饿汉实现方式和懒汉实现方式&#xff08;i&#xff09;饿汉方式实现单例模式&#xff08;ii&#xff09;懒汉方式实现单例模式&#xff…

数据结构6.4——归并排序

基本思想&#xff1a; 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用。将已有的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序&#xff0c;再使子序列段间有序。若将两个有序表合并成一个…

revit转gltf,revit转3dtiles,如何将Revit模型转为3DTiles格式并在Cesiumjs中高效可视化

Revit模型导出gltf、glb与3dtiles有多种方式&#xff0c;但一般的商业工具收费普遍较高&#xff1a;Cesiumlab导出3dTile格式数据&#xff0c;Cesiumlab暂时可试用3天&#xff0c;会员版收费每年800&#xff1b;BimAngleEngine导出3dTile格式数据BimAngleEngine暂时可试用30天&…

可视化建模与UML《部署图实验报告》

一、实验目的&#xff1a; 1、熟悉部署图的基本功能和使用方法。 2、掌握使用建模工具软件绘制部署图的方法 二、实验环境&#xff1a; window11 EA15 三、实验内容&#xff1a; 根据以下的描述&#xff0c;绘制部署图。 网上选课系统在服务器端使用了两台主机&#xff0c;一…

在CentOS中安装和卸载mysql

在CentOS7中安装和卸载mysql 卸载mysql1、查看是否安装过mysql2、查看mysql服务状态3、关闭mysql服务4、卸载mysql相关的rpm程序5、删除mysql相关的文件6、删除mysql的配置文件my.cnf 安装mysql1、下载mysql相关的rpm程序2、检查/tmp临时目录权限3、安装mysql前的依赖检查3、安…