【JavaEE】-- SpringBoot快速上手

news/2025/3/22 20:19:34/

文章目录

  • 1. Maven
    • 1.1 什么是Maven
    • 1.2 为什么要学Maven
    • 1.3 创建一个Maven项目
    • 1.4 Maven核心功能
      • 1.4.1 项目创建
      • 1.4.2 依赖管理
      • 1.4.3 Maven Help插件
    • 1.5 Maven仓库
      • 1.5.1 本地仓库
      • 1.5.2 中央仓库
      • 1.5.3 私有服务器(私服)
    • 1.6 Maven设置国内源
      • 1.6.1 配置当前项目setting
  • 2. 第一个SpringBoot程序
    • 2.1 SpringBoot介绍
    • 2.2 Spring Boot项目创建
      • 2.2.1 使用Idea创建
      • 2.2.2 网页版创建(了解)
    • 2.3 项目代码和目录介绍
    • 2.4 运行项目
    • 2.6 Web服务器
    • 2.7 请求响应流程分析
    • 2.8 访问出错怎么办
      • 2.8.1 404
      • 2.8.2 500
      • 2.8.3 无法访问此网站
      • 2.8.4 小结
  • 3. 总结

1. Maven

1.1 什么是Maven

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

大白话:Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,maven就跟预制菜是一个道理。通过pom.xml文件的描述来管理一个项目的构建。

1.2 为什么要学Maven

一句话:简单,方便,提高我们的开发效率,减少我们的开发Bug.

maven提供的功能非常多,目前的学习主要是以下两个方面:
1.项目构建
2.管理依赖

1.3 创建一个Maven项目

在这里插入图片描述
在这里插入图片描述

1.4 Maven核心功能

Maven在项目开发中的作用主要体现在下面两个方面:
1.项目构建
2.管理依赖

1.4.1 项目创建

Maven提供了标准的,跨平台(Linux,Windows,MacOS等)的自动化项目构建方式当我们开发了一个项目之后,代码需要经过编译,测试,打包,发布等流程,每次代码的修改,都需要经过这些流程,如果代码反复调试修改,这个流程就需要反复进行,就显得特别麻烦,而Maven给我们提供了一套简单的命令来完成项目的构建。
在这里插入图片描述
打包就是把所有的.class文件,全部放在一起,打成jar包或者war包。

jar包和war包都是一种压缩文件
jar包就是把开发人员已经写好的一些代码进行打包.打好的jar包就可以引入到其他项目中,也可以直接使用这些jar包中的类和属性.另外也可以打成可执行jar包,这样的包就可以通过java-jar命令来执行
war包可以理解为是一个web项目,里面是项目的所有东西,通常用于网站.

这个maven命令是从上往下执行的,如果我们双击package这个命令,它就会执行package和package以前的命令。

1.4.2 依赖管理

Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包获取的jar包,其实就是依赖.

pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。

项目要能够正常运行,就要依赖于第三方(除了jdk之外的)的一些东西。
依赖的坐标
在这里插入图片描述
依赖配置
依赖:指当前项目运行所需要的jar包

  1. 在pom.xm文件<dependencies>标签内,添加依赖坐标
java"><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version>
</dependency>
  1. 点击刷新按钮,引入新加入的依赖jar包。

后续有添加新的jar包,或者修改jar包版本,都需要通过该方式在项目中添加依赖.
在这里插入图片描述

  1. 刷新完之后,就可以在项目中看到新加入的jar包。
    在这里插入图片描述

依赖传递
早期我们没有使用maven时,向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下.比如A依赖B,B依赖C,那么A项目引I入B的同时,也需要引入C,如果我们手动管理这个依赖,这个过程就会比较麻烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的。

但使用maven的话,就可以避免管理所需依赖的关系。我们只需要在pom文件中,定义直接依赖就可以了,由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入
在这里插入图片描述
如上图,假如项目A通过Maven引入JarA,会自动引入JarB和JarC.
JarA 和项目B就是项目A的直接依赖。JarB,JarC是间接依赖。

直接依赖:在当前项目中通过依赖配置建立的依赖关系。
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。

依赖排除
当前阶段我们需要依赖的库并不多,但随着项目的越来越复杂,库之间的依赖关系也会变得越来越复杂,如上图中,如果项目A不需要JarB,也可以通过排除依赖的方式来实现。

排除依赖:
指主动断开依赖的资源。(被排除的资源无需指定版本)

java"><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>

1.4.3 Maven Help插件

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

在这里插入图片描述
在这里插入图片描述
安装之后,打开pom文件,可以看到Jar包之间的依赖关系。
在这里插入图片描述
也可以右键排除掉一些依赖。
在这里插入图片描述

1.5 Maven仓库

jar包都是从maven仓库中下载出来的。Maven仓库的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包,插件等)。

Maven仓库分为两大类:本地仓库远程仓库.其中远程仓库又分为中央仓库,私服和其他公共库

1.5.1 本地仓库

本地仓库:自己计算机上的一个目录(用来存储jar包)
当项目中引l入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包1.如果有,则在项目直接引用。
2.如果没有,则去中央仓库中下载对应的jar包到本地仓库。
在这里插入图片描述
本地仓库地址可以通过Maven配置查看:
在这里插入图片描述
在这里插入图片描述
查看该仓库目录,可以看到该目录下有很多的jar(最开始是空的,随着Maven的使用,该仓库下文件会越来越多)
在这里插入图片描述

1.5.2 中央仓库

中央仓库地址
可以通过https://mvnrepository.com/这个网站来查询并下载。

  1. 访问https://mvnrepository.com/
  2. 进行查找,比如MySQL
    在这里插入图片描述
  3. 选择要添加的jar包版本
    在这里插入图片描述
  4. 查看jar包对应坐标
    在这里插入图片描述

1.5.3 私有服务器(私服)

私服:一般由公司团队搭建的私有仓库
私服属于某个公司,或者某个部门,往往需要一定权限
有了私服之后,Maven依赖下载的顺序又发生了变化。
在这里插入图片描述
当Maven需要下载资源的时候
1.先从本地仓库获取,本地仓库存在,则直接返回
2.如果本地仓库没有,就从私服请求,私服存在该资源,就直接返回
3.如果私服上不存在该资源,则从中央仓库下载,中央仓库不存在,就报错了…
4.如果中央仓库中存在,就先缓存在私服上之后,再缓存到本地仓库里,再为Maven的下载请求提供服务
私服是很多人在使用的,所以只需要第一个使用者下载一次就可以了

1.6 Maven设置国内源

因为中央仓库在国外,所以下载起来会比较慢,所以咱们选择借助国内一些公开的远程仓库来下载资源接下来介绍,如何设置国内源

1.6.1 配置当前项目setting

在这里插入图片描述

在这里插入图片描述

2. 第一个SpringBoot程序

2.1 SpringBoot介绍

spring就是一个框架,是一个半成品,把一些项目公共的部分抽取出来。
spring是一个家族:
在这里插入图片描述

2.2 Spring Boot项目创建

2.2.1 使用Idea创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2 网页版创建(了解)

不使用Idea 也可以创建Spring Boot 项目,我们可以使用 Spring 官方提供的网页版来创建SpringBoot项目。
网页版创建项目先访问:https://start.spring.io,如下图所示:
在这里插入图片描述
在这里插入图片描述
点击生成按钮会下载一个SpringBoot的zip包,解压zip之后目录如下:
在这里插入图片描述
然后再使用Idea打开之后,SpringBoot项目就算创建成功了,

2.3 项目代码和目录介绍

观察pom文件

java"><?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><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.example.demo.demos.DemoApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

pom.xml文件里的具体信息,不需要过度关注,我们主要看标签里面的内容
pom文件中,引入了两个依赖
1.spring-boot-starter-web:包含了web应用开发所需要的常见依赖
2.spring-boot-starter-test:包含了单元测试所需要的常见依赖

父工程

在这里插入图片描述
这些依赖没有指定具体的版本号,但是我们的jar包也是正常引入到项目中了,并且查看的话,是有版本号的。

因为每一个SpringBoot工程,都有一个父工程.依赖的版本号,在父工程中统一管理.
父工程指定版本号后,就会自动引l入和所指定版本对应的依赖,创建的SpringBoot项目,会继承SpringBoot父工程.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
目录介绍
在这里插入图片描述

SpringBoot项目有两个主要的目录:

  • src/main/java:Java源代码
  • src/main/resources:为静态资源或配置文件:
    • /static:静态资源文件夹,比如前期学的js,cSs,html等静态文件,不需要服务器数据进行绑定的页面
    • /templates:模版资源文件夹,主要存放动态模板文件,比如JSP,Freemarker,Thymeleaf等需要服务器动态渲染数据的文件
  • src/test/java:测试代码源代码
  • target:编译后的文件路径
  • pom.xml:maven配置文件

2.4 运行项目

在这里插入图片描述
这个注解加到哪里,就说明项目的启动入口在哪里。

点击启动类的main方法就可以运行SpringBoot项目了,启动成功如下图所示:
在这里插入图片描述

2.6 Web服务器

浏览器和服务器两端进行数据交互,使用的就是HTTP协议。
在这里插入图片描述
HTTP协议就是HTTP客户端和HTTP服务器之间的交互数据的格式。
tomcat web 服务器

web服务器就是对HTTP协议进行封装,程序员不需要直接对协议进行操作(自己写代码去解析HTTP协议规则),让web开发更加便捷,所以web服务器也被称为WWW服务器,HTTP服务器,主要功能是提供网上信息浏览服务。
常见的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等
SpringBoot内置了Tomcat服务器,无需配置即可直接运行

在这里插入图片描述

Tocmat默认端口号是8080,所以我们程序访问时的端口号也是8080

一个tomcat可以运行多个项目,现在,spring Boot 集成了tomcat ,一个项目对应一个tomcat。

2.7 请求响应流程分析

浏览器输入URL(包含协议、域名、端口号、资源路径、查询字符串)之后,发起请求,就和服务器之间建立了连接。
在这里插入图片描述
浏览器:

  • 输入网址:http://127.0.0.1:8080/hello。
    • 通过IP地址127.0.0.1定位到网络上的一台计算机,127.0.0.1就是本机
    • 通过端口号8080找到计算机上对应的进程,也就是在本地计算机中找到正在运行的8080端口的程序
    • /user/sayhi是请求资源位置
      • 资源:对计算机而言资源就是数据)
      • web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)http://127.0.0.1:8080/user/sayhi,就是向本地计算机中的8080端口程序,获取资源位置是/user/sayhi的数据
        8080端口程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:

  • 接收到浏览器发送的信息(如:/user/sayhi)
  • 在服务器上找到/user/sayhi的资源
  • 把资源发送给浏览器

2.8 访问出错怎么办

HTTP 状态码
1xx(信息性状态码):表示接收的请求正在处理.
2xx(成功状态码):表示请求正常处理完毕。
3xx(重定向状态码):需要后续操作才能完成这一请求
4xx(客户端错误状态码):表示请求包含语法错误或无法完成
5xx(服务器错误状态码):服务器在粗粒请求的过程中发生了错误。

2.8.1 404

404 表示用户访问的资源不存在,大概率是URL的路径写的不正确。
错误实例1:ur单词拼错
在这里插入图片描述

错误实例2:注解写错

java">@Controller
public class UserController {@RequestMapping("/sayHi")public String sayHi(){return "hello,Spring";}
}

访问时也会报错404
在这里插入图片描述
通过Fiddler观察Http请求

在这里插入图片描述

出现4开头的状态码,先检查请求是否正确,包含四个方面:
1.请求url
2.请求参数
3.请求格式
4.请求反方式:get / post

2.8.2 500

在这里插入图片描述
看到这个状态码,第一反应是去看项目控制台的日志

2.8.3 无法访问此网站

一般是tomcat启动失败了。
在这里插入图片描述
这种情况一般是服务未成功启动,也就是tomcat未启动,或者IP/端口写错

打开Fiddler的话,界⾯如下:
在这里插入图片描述

2.8.4 小结

Spring Framework:相当于是一个非常便捷的交通工具:火车
Spring MVC :相当于坐火车要去买车票,是那种原始的买票方式:火车站、火车票代售点。
Spring Boot :相当于现在的12306,里面不仅可以非常方便的去购买火车票,还集成了其他非常好用的第三方服务(保险,外卖…)
Spring :一般就是在描述spring家族

3. 总结

SpringBoot是为了快速开发Spring而诞生的,SpringBoot具备:

  • SpringBoot提供了启动添加依赖的功能,可以快速集成框架。
  • 内置web服务器,无需配置Tomcat等Web服务器,直接运行和部署程序
  • 可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况等特点。
    SpringBoot可使用Idea或网页创建,它的设计思想是约定大于配置,类上标注@SpringBootApplication就可以启动SpringBoot项目了.
文章来源:https://blog.csdn.net/2303_80341387/article/details/146309053
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/1580558.html

相关文章

sqlite mmap

https://www.sqlite.org/mmap.html 1. 内存映射 I/O 的基本原理 默认机制&#xff08;传统 I/O&#xff09; SQLite 默认通过 xRead() 和 xWrite() 方法&#xff08;对应 read()/write() 系统调用&#xff09;访问数据库文件。这些方法需要将数据从内核缓冲区复制到用户空间&am…

图莫斯TOOMOSS上位机TCANLINPro使用CAN UDS功能时 编写、加载27服务dll解锁算法文件

【本文发布于https://blog.csdn.net/Stack_/article/details/146303690&#xff0c;未经许可不得转载&#xff0c;转载须注明出处】 软件安装目录下找到如下压缩包&#xff0c;此为dll文件示例工程 使用VisualStudio打开工程GenerateKeyExImpl.vcxproj&#xff0c;可能会提示版…

常用的pdf技术有哪些?--笔记

常用的pdf技术有哪些&#xff1f; 1.iText PDF&#xff1a;iText 是著名的开放项目&#xff0c;是用于生成 PDF 文档的一个 java 类库。通过 iText 不仅可以生成 PDF 或 rtf 的文档&#xff0c;而且可以将 XML、Html 文件转化为 PDF 文件。 Openoffice&#xff1a;openoffice 是…

【数据分析】数据筛选(布尔索引:多个判断条件)

在pandas模块中&#xff0c;逻辑运算符有以下几种&#xff1a; 1.&表示并且 2.|表示或者 3.~表示非 1. &&#xff08;并且&#xff09;运算符 当且仅当运算符两边的布尔值均为 True 时&#xff0c;运算结果才为 True&#xff0c;其他情况为 False。 a True b Tr…

【go】如何处理可选配置

问题背景&#xff1a; 在设计API 时&#xff0c;如何处理可选配置&#xff1f; 1. 配置结构体 好处&#xff1a;解决兼容性&#xff0c;但问题是0值&#xff0c;和可读性差 如何解决0值&#xff1f; ——使用指针&#xff0c;将nil和类型0值做区分 但是入参包含结构体&#x…

计算机考研-数据结构2.2

顺序表的查找 各位同学大家好, 在这个小节中, 我们会学习顺序表的查找操作怎么实现, 那分为两种查找, 一种是按位查找, 一种是按值查找, 那首先来看按位查找怎么实现 对一个线性表进行按位查找, 就是要从这个线性表l当中, 取得第二个元素, 那如果这个线性表示用顺序表的方式实…

硬件驱动——51单片机:独立按键、中断、定时器/计数器

目录 一、独立按键 1.原理 2.封装函数 3.按键控制点灯 数码管 二、中断 1.原理 2.步骤 3.中断寄存器IE 4.控制寄存器TCON 5.打开外部中断0和1 三、定时器/计数器 1.原理 2.控制寄存器TCON 3.工作模式寄存器TMOD 4.按键控制频率的动态闪烁 一、独立按键 1…

Oracle数据库与MySQL数据库的全面对比分析

文章目录 **一、概述与定位****1. Oracle数据库****2. MySQL数据库** **二、架构设计对比****1. 存储引擎** **三、功能特性对比****1. 数据类型****2. 事务支持** **四、性能优化对比****1. 查询优化****2. 分区表** **五、安全性对比****1. 数据加密****2. 权限管理** **六、…