SpringBoot 快速入门

目录

一、创建你的第一个Maven项目

[二、Maven 依赖管理](#二、Maven 依赖管理)

1、依赖坐标

[2、排除依赖 exclusions](#2、排除依赖 exclusions)

三、Maven仓库

1、Maven依赖坐标

2、Maven仓库分类

[2.1 本地仓库](#2.1 本地仓库)

​编辑

​编辑

[2.2 中央仓库](#2.2 中央仓库)

查找Jar的坐标步骤

[2.3 私有服务器(私服)](#2.3 私有服务器(私服))

[Maven 依赖查找顺序(有私服场景)](#Maven 依赖查找顺序(有私服场景))

3、简单工作流程总结

[4 Maven 设置国内源](#4 Maven 设置国内源)

[4.1 配置当前项目的 setting](#4.1 配置当前项目的 setting)

[4.2 设置新项目的 setting](#4.2 设置新项目的 setting)

四、第一个SpringBoot程序

[4.1 Spring Boot介绍](#4.1 Spring Boot介绍)

Spring生态主要项目

[什么是Spring Boot](#什么是Spring Boot)

[4.2 Spring Boot项目创建](#4.2 Spring Boot项目创建)

使用Idea创建

项目配置参数说明(豆包提供,仅供参考)

创建内部

五、jar包下载不下来???


一、创建你的第一个Maven项目

首先,idea有吧,然后先教你如何快速创建一个SpringBoot的程序。见下:

如图,打开项目后,

如图,填好项目名、项目位置、选择Maven,接着来看:

一般来说,打开后,会展现如下内容:

接着我来介绍一下:

首先需要了解的是

这个pom.xml的项目,是用来传递依赖的,那什么是"依赖"呢?

想像一下,你在吃饭,那你吃饭是不是需要盘子,那么吃饭时你的"盘子就是你的依赖",

所以在这里面就是放各种你运行Java代码所需要的各种第三方文件的。

至于从哪里导入,是关于"仓库"(这个下文解释)。

然后目光来看右侧:

这里有一系列的命令,

二这里我把豆包给的简要解释放到这里,大家可以参考:

Maven 生命周期,就是项目构建的一套固定执行流程,后面的命令执行会自动执行前面所有阶段

  1. clean:清理,删除项目编译生成的 target 目录,把旧编译产物清空。
  2. validate:校验,验证项目配置、pom 文件是否合法。
  3. compile:编译,把 java 源代码编译成 class 字节码文件。
  4. test:测试,执行项目单元测试代码。
  5. package:打包,把编译后的代码打成 jar/war 包。
  6. verify:校验检查,对打包结果做完整性校验。
  7. install :安装,把打好的包保存到本地 Maven 仓库,供本机其他项目引用。
  8. site:生成项目文档站点。
  9. deploy:部署,把包上传到远程私服仓库,给团队其他人使用。

✨小知识点: 执行后面阶段会自动执行前面全部阶段,例如执行install,会自动依次执行 validate → compile → test → package → verify → install。 日常开发最常用:cleancompilepackageinstall

二、Maven 依赖管理

Maven 核心能力之一就是依赖管理 ,我们不再需要手动下载、复制 jar 包到项目中,全部通过pom.xml配置文件完成 jar 包的引入。

依赖:项目运行所需要的第三方 jar 包。

1、依赖坐标

每一个第三方 jar 包,都拥有唯一的依赖坐标,由三部分组成:

  • groupId:组织 / 公司 / 开源社区标识
  • artifactId:项目、jar 包名称
  • version:版本号

示例(MySQL 驱动):写完记得一定要右上角刷新(任意一个均可)

复制代码
<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
</dependencies>

Maven 就会自动从仓库下载对应 jar 包到项目中。后续新增依赖、修改版本,都需要执行刷新。

2、排除依赖 exclusions

很多 jar 包会自带传递依赖,有时候传递过来的包会产生包冲突、依赖冲突 。 我们可以使用<exclusions>标签,把不需要的传递依赖排除掉。

比如说我这里想排除这个包:

复制代码
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
    <exclusions>
        <exclusion>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
        </exclusion>
    </exclusions>
</dependency>

注意:exclusion里面不需要写 version ,只需要指定groupIdartifactId即可。

依赖排除本质上是为了防止版本的冲突,这里了解一下,暂时不需掌握太深入。

PS:这里还介绍一个插件--Maven Help,不过由于现在阶段排除依赖用的比较少,所以这里大家感兴趣的可以去装一下,流程也给你们:

三、Maven仓库

OK,这里再介绍一个必须了解的概念:本地仓库和远程仓库

1、Maven依赖坐标

我们通过短短几行代码,就把依赖jar包放在了项目里。

复制代码
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql‑connector‑java</artifactId>
    <version>8.0.30</version>
</dependency>

以上代码称之为坐标,坐标是唯一的。

在Maven中,根据groupIdartifactIdversion的配置,来唯一识别一个jar包,三者缺一不可。

当我们在pom文件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库里寻找Jar包,并把它下载下来,添加到项目中。这个Jar包下载存放的地方就称为仓库

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

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

2、Maven仓库分类

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

2.1 本地仓库

本地仓库就是自己计算机上的一个目录,用来存储jar包。

当项目中引入对应依赖jar包后,Maven首先会查找本地仓库中是否有对应的jar包:

对应方式如图:

  • 如果有,则在项目直接引用
  • 如果没有,则去远程中央仓库中下载对应的jar包到本地仓库

本地仓库地址查看方式(IDEA): File -> Settings

查看该仓库目录,可以看到该目录下有很多的jar。仓库目录初始是空的,随着Maven的使用,仓库下文件会越来越多。

本地仓库默认位置:

这里注意,强烈不建议放到C盘,否则容易爆满,建议改盘。

并且路径不要给我出现中文!

++改盘步骤:Ctrl+C与Ctrl+V把.m2文件复制到你想要改的文件路径上,然后修改下图的位置为新位置++

第一个是Maven配置文件(建议使用国内镜像):可以去网上找

我这里使用我自己的配置文件;

2.2 中央仓库

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

仓库地址:Central Repository:

可以通过网站:https://mvnrepository.com 来查询并下载jar包。 我们既可以把自己写好的Jar包上传到中央仓库(需要满足一定要求),也可以从中央仓库下载Jar包。

查找Jar的坐标步骤

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

2、搜索需要的jar,例如搜索mysql

3、选择要添加的Jar包版本:

建议:在新的里面选择次新的,使用人数偏多的。

4、复制Jar包对应的maven坐标,粘贴到pom.xml的dependency中

实操小提示:选择版本的时候尽量避开存在漏洞(Vulnerabilities)的版本,优先选择使用量高、稳定的版本。

2.3 私有服务器(私服)

私服一般是公司、团队内部搭建的私有仓库,归属于公司或者部门,访问通常需要权限。 引入私服之后,Maven 依赖的下载查找顺序会发生改变。

Maven 依赖查找顺序(有私服场景)

  1. 先从本地仓库获取,如果本地仓库已经存在该 jar 包,直接使用。
  2. 本地没有,则向私服请求资源;私服有资源,直接返回。
  3. 私服也不存在,就去中央仓库下载;中央仓库也找不到,直接报错。
  4. 如果中央仓库存在资源,会先把资源缓存到私服,再缓存到本地仓库,供本次请求使用。

小提示:私服供团队多人共用,同一个 jar 包,团队只需要第一个人下载一次,其他人直接从私服拿取,提升团队开发效率。

整体流程:本地仓库 → 私服 → 中央仓库。

3、简单工作流程总结

  1. pom.xml编写依赖坐标;
  2. maven先去本机本地仓库找jar;
  3. 本地没有,就联网去中央远程仓库下载;
  4. 下载完成保存到本地仓库,项目直接引用本地仓库jar包。

4 Maven 设置国内源

Maven 默认的中央仓库部署在国外,国内直接访问下载 jar 包速度很慢,开发中一般会配置国内公开镜像源,加速依赖下载。

4.1 配置当前项目的 setting

IDEA 路径:File → Settings 在这里配置的 Maven 配置,仅对当前打开的项目生效

4.2 设置新项目的 setting

上面的配置只作用于当前项目,如果希望之后新建的所有项目都使用同一套 Maven 配置,不用反复修改。 只需要让新项目共用同一个settings.xml配置文件,新建项目时确认 Maven 的settings.xml文件路径即可,无需重复编写镜像配置。

四、第一个SpringBoot程序

4.1 Spring Boot介绍

在学习SpringBoot之前,我们先来了解Spring框架。访问Spring官方网站:Spring | Home

Spring官方对它的定位:Spring让Java编程变得更快、更简单、更安全。凭借对开发速度、简洁性与生产力的追求,Spring已经成为全球最流行的Java开发框架。

Spring生态下提供了大量开源项目,覆盖Web开发、安全、大数据、分布式系统等各个领域,形成了一套完整的技术生态圈,日常开发我们会优先选用Spring生态内的组件解决业务问题。

Spring生态主要项目

上面所有项目,底层都基于Spring Framework。但是原生Spring Framework有一个很突出的痛点:配置繁琐、入门门槛高。 为了解决大量XML配置带来的麻烦,Spring推出了Spring Boot,用来简化Spring开发。

什么是Spring Boot

我们可以用生活中的脚手架来理解Spring Boot。 盖房子时,脚手架可以帮助工人砌墙、抹灰、装修,核心作用就是更快地把房子搭建出来

Spring Boot就是Spring框架的脚手架,专门用来快速开发Spring应用程序。

在没有Spring Boot之前,使用原生Spring开发,我们需要手动引入一大堆依赖、编写大量xml配置文件,配置十分繁琐。 Spring Boot脚手架就是为了解决这个痛点而生,简化依赖管理、自动装配,大幅降低Spring的开发成本。

4.2 Spring Boot项目创建

使用Idea创建

因为我们用的Idea社区版(其他版本也同样适用),所以建议自己想办法去弄个专业版。

新建项目,进入项目配置页面,需要填写项目的各项基础属性。

项目配置参数说明(豆包提供,仅供参考)

参数 示例值 说明
Group Id com.example 组织ID,一般写公司/个人反向域名,代表项目所属组织
Artifact Id demo 项目ID,当前项目的模块名称
Version 0.0.1‑SNAPSHOT 项目版本,SNAPSHOT代表快照(开发测试版本)
Project type Maven 项目构建类型,这里选择Maven管理项目
Language Java 开发语言,Spring Boot主流使用Java
Packaging Jar 打包方式,Spring Boot项目一般使用Jar包
Java version 17 JDK版本,要和本地安装的JDK保持一致
Project name demo 项目名称,本地文件夹显示的名字
Project description Demo project for Spring Boot 项目描述,对项目的简单说明
Package name com.example.demo 项目包名,由GroupId+ArtifactId组合而成

配置完成之后点击Next,继续选择项目需要引入的依赖,确认之后即可生成Spring Boot工程。

选择我框起来的那两个之一,不要用snapshot即可

我们做Web开发,所以使用Web项目,

创建内部

之后可以看到一个默认的启动类

然后我们可以创建我们的第一个Springboot程序:

然后下面你先模仿的来写,后期会解释各个注释的意思:

OK,现在可以随便打开一个浏览器了,然后再输入框输入:

回车一下:

注意,只留src和pom文件即可

这个也删了:

五、jar包下载不下来该咋办?

这里附上一张图:

不过小罗我目前没有遇到过这种情况,这个也是我在网上找的方法,大家可以去尝试。

六、Spring Boot项目目录

Spring Boot可使用Idea或网页创建,它的设计思想是约定大于配置,类上标注@SpringBootApplication就可以启动Spring Boot项目。

Spring Boot项目有两个主要的目录:

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

七、Web服务器

浏览器和服务器两端进行数据交互,使用的就是HTTP协议。

前面我们已经学习了 HTTP 协议,知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式。 Web服务器就是对HTTP协议进行封装,程序员不需要直接对协议进行操作(自己写代码去解析http协议规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器,HTTP服务器,主要功能是提供网上信息浏览服务。

常见的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等。

SpringBoot内置了Tomcat服务器,无需配置即可直接运行。 Tomcat默认端口号是8080,所以我们程序访问时的端口号也是8080。

八、请求响应流程分析

浏览器输入URL之后,发起请求,就和服务器之间建立了连接。

浏览器

输入网址:http://127.0.0.1:8080/hello

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

http://127.0.0.1:8080/user/sayhi,就是向本地计算机中的8080端口程序,获取资源位置是/user/sayhi的数据。 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器。

服务器

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

九、访问出错怎么办

9.1 404

404表示用户访问的资源不存在。大概率是URL的路径写的不正确。

  • 错误实例1:url单词拼错
  • 错误实例2:注解写错 使用@Controller,没有搭配@ResponseBody,访问接口也会报404。

9.2 500

服务器出现内部错误。一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码。 示例代码:

复制代码
@RestController
public class UserController {
    @RequestMapping("/sayHi")
    public String sayHi(){
        int res = 10/0;
        return "hello,Spring";
    }
}

代码出现除零异常,访问就会返回500状态码。

9.3 小结

最开始学习Spring的时候,会遇到很多问题,更多是环境相关的问题。 我们不仅要学习 Spring 代码的基本写法,更重要的是学习排查错误的思路。

程序猿调试BUG如同医生诊病。 一个有经验的程序猿和一个新手程序猿相比,最大的优势往往不是代码写的多好,而是调试效率有多高。同一个问题可能新手花了几天都无法解决的,但是有经验的程序猿可能几分钟就搞定了。

熟悉 HTTP 协议能让我们调试问题事半功倍。

  • 4xx的状态码表示路径不存在,往往需要检查 URL 是否正确,和代码中设定的 Context Path 以及 Servlet Path 是否一致。
  • 5xx的状态码表示服务器出现错误,往往需要观察页面提示的内容和 Tomcat 自身的日志,观察是否存在报错。
  • 出现连接失败往往意味着服务没有正确启动,也需要观察服务的自身日志是否有错误提示。

观察日志是调试程序的重要途径。系统日志往往很多,需要同学们耐心阅读,经常阅读,熟练了就能更快速的找到问题了。

十、总结

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

  • Spring Boot 提供了启动添加依赖的功能,可以快速集成框架。
  • 内置web服务器,无需配置 Tomcat 等Web服务器,直接运行和部署程序。
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况等特点。
相关推荐
吴声子夜歌1 小时前
Java面试——数据结构(一)
java·数据结构·面试
疯狂打码的少年2 小时前
【数据结构】选择类排序:简单选择与堆排序
java·数据结构·笔记·算法
卷无止境2 小时前
除了开发api,FastAPI其实也可以配合jinja2模板写页面
后端·python·fastapi
吴声子夜歌2 小时前
Java面试——基础
java·开发语言·面试
newerp2 小时前
Redis 操作与缓存策略
后端·程序员·go
newerp2 小时前
GORM ORM 基础
后端·程序员·go
小岛前端2 小时前
AI Skills 已经封神,但新的问题却越来越严重!
前端·后端·github
拖孩2 小时前
一个人 + AI 做的小程序,上线 15 天赚了 10 块 5
前端·后端·微信小程序
newerp2 小时前
CRUD 操作与预处理语句
后端·程序员·go