SpringBoot快速使用

news2024/12/16 5:52:27

        一些名词的碎碎念:

        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.coloradmin.cn/o/2260332.html

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

相关文章

【含开题报告+文档+PPT+源码】基于SpringBoot的开放实验管理平台设计与实现

开题报告 设计开放实验管理平台的目的在于促进科学研究与教学的融合。传统实验室常常局限于特定地点和时间&#xff0c;而开放平台可以为学生、教师和研究人员提供一个便捷的交流与共享环境。通过在线平台&#xff0c;他们可以分享实验资源、交流经验&#xff0c;从而促进科学…

分布式 漏桶算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 漏桶算法 & 总结》《分布式 & 漏桶算法 & 问题》 概述 简介 LBA Leaky Bucket Algorithm 漏桶算法是一种流行于网络通信领域的流量控制/频率限制算法。漏桶算法的核心原理是通过一个概念上的“漏桶”来…

linux glances vs top

一、安装 apt-get install glances glances top显示效果&#xff1a;

CTF知识集-PHP特性

title: CTF知识集-PHP特性 写在开头可能会用到的提示 call_user_func 调用的函数可以不区分大小写preg_match过滤存在长度溢出&#xff0c;长度超过100w检测失效。str_repeat(‘show’,250000); 生成100w个字符preg_match是无法处理数组的&#xff0c;例如:preg_match( n u m…

Hadoop运行Mapreduce问题集锦——Ubuntu虚拟机配置

一、端口访问问题 问题描述 运行任务前一直重连。具体来说&#xff0c;错误发生在尝试从czs-virtual-machine虚拟机的127.0.1.1地址连接到同一台机器的8032端口时&#xff0c;连接被拒绝。 如下&#xff1a; 2024-11-17 23:05:45,800 INFO retry.RetryInvocationHandler: java…

【经验分享】搭建本地训练环境知识点及方法

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…

流程引擎Activiti性能优化方案

流程引擎Activiti性能优化方案 基于关系型数据库层面优化 MySQL建表语句优化 Activiti在MySQL中创建默认字符集为utf8&#xff08;即utf8mb3&#xff09;格式&#xff0c;本文将默认字符集设置为utf8mb4&#xff0c;排序规则为utf8mb4_general_ci&#xff0c;并修改变量等类…

Unix 传奇 | 谁写了 Linux | Unix birthmark

注&#xff1a;本文为 “左耳听风”陈皓的 unix 相关文章合辑。 皓侠已走远&#xff0c;文章有点“年头”&#xff0c;但值得一阅。 文中部分超链已沉寂。 Unix 传奇 (上篇) 2010 年 04 月 09 日 陈皓 了解过去&#xff0c;我们才能知其然&#xff0c;更知所以然。总结过去…

TimerPickerDialog组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为时间,它主…

大模型系列4--开源大模型本地部署到微调(WIP)

背景 一直想真正了解大模型对硬件资源的需求&#xff0c;于是准备详细看一篇视频&#xff0c;将核心要点总结记录下。本文内容参考视频&#xff1a;保姆级教程&#xff1a;6小时掌握开源大模型本地部署到微调&#xff0c;感谢up主 训练成本 训练 > 微调 > 推理训练GPT…

现代密码学总结(上篇)

现代密码学总结 &#xff08;v.1.0.0版本&#xff09;之后会更新内容 基本说明&#xff1a; ∙ \bullet ∙如果 A A A是随机算法&#xff0c; y ← A ( x ) y\leftarrow A(x) y←A(x)表示输入为 x x x ,通过均匀选择 的随机带运行 A A A,并且将输出赋给 y y y。 ∙ \bullet …

Python中opencv的一些函数及应用

Sobel 算子函数 功能&#xff1a; Sobel 算子用于计算图像的梯度&#xff08;变化率&#xff09;&#xff0c;常用于边缘检测。它通过对图像应用一个基于一阶导数的滤波器来强调图像中的边缘部分&#xff0c;特别是水平和垂直方向上的边缘。通过计算图像的梯度&#xff0c;可以…

【docker】springboot 服务提交至docker

准备docker &#xff08;不是docker hub或者harbor&#xff0c;就是可以运行docker run的服务&#xff09;&#xff0c;首先确保docker已经安装。 本文以linux下举例说明&#xff1a; systemctl stats docker ● docker.service - Docker Application Container EngineLoaded…

XDOJ 877 图的深度优先遍历

题目&#xff1a;图的深度优先遍历 问题描述 已知无向图的邻接矩阵&#xff0c;以该矩阵为基础&#xff0c;给出深度优先搜索遍历序列&#xff0c;并且给出该无向图的连通分量的个数。在遍历时&#xff0c;当有多个点可选时&#xff0c;优先选择编号小的顶点。&#xff08;即…

大屏开源项目go-view二次开发1----环境搭建(C#)

最近公司要求做一个大屏的程序用于展示公司的产品&#xff0c;我以前也没有相关的经验&#xff0c;最糟糕的是公司没有UI设计的人员&#xff0c;领导就一句话要展示公司的产品&#xff0c;具体展示的内容细节也不知道&#xff0c;全凭借自己发挥。刚开始做时是用wpf做的&#x…

摆脱B端UI框架的桎梏,首先从布局开始

在 B 端开发中&#xff0c;UI 框架虽带来便利&#xff0c;但也可能形成桎梏。要摆脱这种束缚&#xff0c;首先从布局着手是个明智之举。传统的 B 端 UI 框架布局可能较为固定&#xff0c;缺乏灵活性。我们可以尝试创新的布局方式&#xff0c;如响应式设计&#xff0c;适应不同屏…

认识异常吧

在 Java 中&#xff0c;将程序执行过程中发生的不正常行为称为异常 。 异常的体系结构 1. Throwable &#xff1a; 是异常体系的顶层类&#xff0c;其派生出两个重要的子类 , Error&#xff08;错误&#xff09; 和 Exception&#xff08;异常&#xff09; 2. Error &…

Repo管理

文章目录 前言Repo介绍清单仓库清单仓库的组成 初始化Repo同步远程仓库Repo实际应用 前言 我们知道&#xff0c;Git是用来管理某一个仓库&#xff0c;那当一个项目用到了多个仓库时&#xff0c;怎么来同步管理这些仓库呢&#xff1f;这个时候就可以引入Repo管理。 Repo介绍 …

Spring Security6.3 自定义AuthorizationManager问题

项目环境&#xff1a; Springboot3.3.5, 对应的SpringFrameWork6.1&#xff0c;Security为6.3 问题&#xff1a;我想自定义AuthorizationManager接口实现类&#xff0c;在里面判断如果角色为amdin则放行请求&#xff1b; 在AdminAuthorizationManager类的check()方法中pass变量…

十二月第三周python

import tkinter as tk #安装图形窗口工具 import cv2 #处理视频工具 from tkinter import * #安装图形窗口工具 from PIL import Image, ImageTk#处理图形工具 roottk.Tk() #给工具起名字 root.title("子豪")#软件左上角名字 root.geometry("800x800500100&…