一些名词的碎碎念:
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> 去看日志(分段看)从下往上看(放在文本编辑器里面看)