Spring是一个高级框架,越高级用起来越简单。
Spring 在不同场景下有两个语义:
- 第一个Spring Framework
- 第二个Spring家族
SpringBoot的诞生是为了简化Spring的开发,Spring Boot翻译一下就是spring脚手架。
SpringBoot项目的创建
使用官网的创建方式
1)快速启动

2)点击进入

3)配置选项

4)添加依赖

5)生成代码,最后使用idea打开项目

使用idea社区版开发工具的创建SpringBoot项目
正常情况下,社区版的idea不支持创建SpringBoot项目的,我们的idea专业版是支持创建SpringBoot项目的。
那么我们如何使用社区版创建SpringBoot项目呢?
需要装一个SpringBoot插件:SpringBoot Help,但是注意想要免费装配需要对idea社区版本有要求。
- 要求:idea社区版本2021.1~2022.1.4【硬性要求】,只有这个范围内的版本才可以装插件
因为我们⽤的Idea社区版,所以先要安装SpringBoot Helper插件才能创建
SpringBoot项⽬。
安装SpringBoot Help插件【如果你使⽤的是专业版Idea,那么不需要安装插件,Idea已经集成了】。
插件地址:SpringBoot Helper插件
安装插件
1)然后点击下载

2)下载压缩包【直接下载,不要解压,不要解压】

再次强调,不要解压,更不要解压之后再压缩

3)在idea中安装插件:file->settings->plugins->设置图标
选择从本地磁盘安装

选择你下载的压缩包,点击ok,然后重启idea


4)file->new->project如果出现以下的Spring Initializer,就说明安装成功了

创建SpringBoot项目
1)file->new->project->Spring Initializer 选择JDK 点击next

2)填写对应的信息

3)选择SpringBoot版本,然后再选择对应的依赖,最后再下一步

4)注意项目名称和你的路径最后一个目录名要一致,因为项目名称也只是一个目录名【或者说项目只是仓库,后面的模块才是真正的项目】,点击next

5)然后此时如果你的项目没有通过maven将依赖包加载进来,那么你就得手动添加为maven项目:点击pom.xml文件右键选择add as maven project添加为maven项目

6)然后我们的社区版会有一个坑:就是需要你将.RELEASE给手动删掉

删除完毕之后刷新一下,此时只需要静静等待我们的maven为我们下载对应的依赖包就行了

7)注意,那么如果你的pom.xml文件还是爆红的话,那么此时应该是SpringBoot的版本问题,当然你也可以不用改,如果改的话我们建议将版本改为3.2.2,注意修改之后要刷新

| 版本号 | 类型 | 适用场景 | 最低 JDK 要求 |
|---|---|---|---|
| 3.2.2 | 最新稳定版 | 新项目开发(推荐) | JDK17+ |
| 2.7.18 | LTS 长期支持版 | 企业级项目(稳定维护至 2025) | JDK8/11/17 |
常见问题:

包下载不下来,我们怎么解决呢?
-
重新刷新maven
-
看一下是全部没有下载下来还是部分没下载下来。如果是全部没下载下来就多次刷新;如果是部分没下载下来,那么还是多次刷新重新下载
-
如果刷新很多次还是下载不下来的话,那么我们就去删除本地仓库,然后再刷新重新下载,比如我我们的spring-boot-maven-plugin

然后再次刷新

-
那么如果上述这样还是不行的话,那么此时我们就加版本号 ,版本好和你的SpringBoot一致就行了,加上之后他就不会报红了

版本管理

- SNAPSHOT是快照版,是非稳定版,可以修改的,可以理解为是开发版本,就是我们在开发的时候可以是使用这个,但是我们上线之后我们就不用这个版本了。
- 其他版本是稳定版,发布之后就不能修改了,哪怕有bug也不能修改,只能通过版本升级的方式修复。
版本
0.0.1-SNAPSHOT
0[第一位].0[第二位].1[第三位]-SNAPSHOT
版本通常有3位数字组成,我们称之为大中小版本。
- 第一位:大版本【用于非常大的改动】
- 第二位:中版本【比较一般的改动,新增小的功能】
- 第三位:小版本【修复bug,新增非常非常小的功能】
为什么依赖中没有版本号?这个版本是谁管理的?
xml
<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>
我们按住Ctrl键会显示对应的版本号,那么请问:这些版本号是谁管理的?

管理这些版本号的是:spring-boot-starter-parent

我们按住Ctrl键点进去会看到版本管理

再使用Ctrl键点进去,你会看到以下的版本管理:
xml
<properties>
<activemq.version>6.1.8</activemq.version>
<angus-mail.version>2.0.5</angus-mail.version>
<artemis.version>2.40.0</artemis.version>
<aspectj.version>1.9.25.1</aspectj.version>
<assertj.version>3.27.6</assertj.version>
<awaitility.version>4.2.2</awaitility.version>
<zipkin-reporter.version>3.5.1</zipkin-reporter.version>
<brave.version>6.1.0</brave.version>
<build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
<byte-buddy.version>1.17.8</byte-buddy.version>
<cache2k.version>2.6.1.Final</cache2k.version>
<caffeine.version>3.2.3</caffeine.version>
<cassandra-driver.version>4.19.2</cassandra-driver.version>
<classmate.version>1.7.3</classmate.version>
<commons-codec.version>1.18.0</commons-codec.version>
<commons-dbcp2.version>2.13.0</commons-dbcp2.version>
<commons-lang3.version>3.17.0</commons-lang3.version>
<commons-pool.version>1.6</commons-pool.version>
<commons-pool2.version>2.12.1</commons-pool2.version>
<couchbase-client.version>3.8.3</couchbase-client.version>
<crac.version>1.5.0</crac.version>
<cyclonedx-maven-plugin.version>2.9.1</cyclonedx-maven-plugin.version>
<db2-jdbc.version>12.1.3.0</db2-jdbc.version>
<dependency-management-plugin.version>1.1.7</dependency-management-plugin.version>
<derby.version>10.16.1.1</derby.version>
<ehcache3.version>3.10.9</ehcache3.version>
<elasticsearch-client.version>8.18.8</elasticsearch-client.version>
<flyway.version>11.7.2</flyway.version>
<freemarker.version>2.3.34</freemarker.version>
<git-commit-id-maven-plugin.version>9.0.2</git-commit-id-maven-plugin.version>
<glassfish-jaxb.version>4.0.6</glassfish-jaxb.version>
<glassfish-jstl.version>3.0.1</glassfish-jstl.version>
<graphql-java.version>24.3</graphql-java.version>
<groovy.version>4.0.29</groovy.version>
<gson.version>2.13.2</gson.version>
<h2.version>2.3.232</h2.version>
<hamcrest.version>3.0</hamcrest.version>
<hazelcast.version>5.5.0</hazelcast.version>
<hibernate.version>6.6.41.Final</hibernate.version>
<hibernate-validator.version>8.0.3.Final</hibernate-validator.version>
<hikaricp.version>6.3.3</hikaricp.version>
<hsqldb.version>2.7.3</hsqldb.version>
<htmlunit.version>4.11.1</htmlunit.version>
<httpasyncclient.version>4.1.5</httpasyncclient.version>
<httpclient5.version>5.5.2</httpclient5.version>
<httpcore.version>4.4.16</httpcore.version>
<httpcore5.version>5.3.6</httpcore5.version>
<infinispan.version>15.2.6.Final</infinispan.version>
<influxdb-java.version>2.25</influxdb-java.version>
<jackson-bom.version>2.19.4</jackson-bom.version>
<jakarta-activation.version>2.1.4</jakarta-activation.version>
<jakarta-annotation.version>2.1.1</jakarta-annotation.version>
<jakarta-inject.version>2.0.1</jakarta-inject.version>
<jakarta-jms.version>3.1.0</jakarta-jms.version>
<jakarta-json.version>2.1.3</jakarta-json.version>
<jakarta-json-bind.version>3.0.1</jakarta-json-bind.version>
<jakarta-mail.version>2.1.5</jakarta-mail.version>
<jakarta-management.version>1.1.4</jakarta-management.version>
<jakarta-persistence.version>3.1.0</jakarta-persistence.version>
<jakarta-servlet.version>6.0.0</jakarta-servlet.version>
<jakarta-servlet-jsp-jstl.version>3.0.2</jakarta-servlet-jsp-jstl.version>
<jakarta-transaction.version>2.0.1</jakarta-transaction.version>
<jakarta-validation.version>3.0.2</jakarta-validation.version>
<jakarta-websocket.version>2.1.1</jakarta-websocket.version>
<jakarta-ws-rs.version>3.1.0</jakarta-ws-rs.version>
<jakarta-xml-bind.version>4.0.4</jakarta-xml-bind.version>
<jakarta-xml-soap.version>3.0.2</jakarta-xml-soap.version>
<jakarta-xml-ws.version>4.0.2</jakarta-xml-ws.version>
<janino.version>3.1.12</janino.version>
<javax-cache.version>1.1.1</javax-cache.version>
<javax-money.version>1.1</javax-money.version>
<jaxen.version>2.0.0</jaxen.version>
<jaybird.version>6.0.3</jaybird.version>
<jboss-logging.version>3.6.1.Final</jboss-logging.version>
<jdom2.version>2.0.6.1</jdom2.version>
<jedis.version>6.0.0</jedis.version>
<jersey.version>3.1.11</jersey.version>
<jetty-reactive-httpclient.version>4.0.13</jetty-reactive-httpclient.version>
<jetty.version>12.0.31</jetty.version>
<jmustache.version>1.16</jmustache.version>
<jooq.version>3.19.29</jooq.version>
<json-path.version>2.9.0</json-path.version>
<json-smart.version>2.5.2</json-smart.version>
<jsonassert.version>1.5.3</jsonassert.version>
<jtds.version>1.3.1</jtds.version>
<junit.version>4.13.2</junit.version>
<junit-jupiter.version>5.12.2</junit-jupiter.version>
<kafka.version>3.9.1</kafka.version>
<kotlin.version>1.9.25</kotlin.version>
<kotlin-coroutines.version>1.8.1</kotlin-coroutines.version>
<kotlin-serialization.version>1.6.3</kotlin-serialization.version>
<lettuce.version>6.6.0.RELEASE</lettuce.version>
<liquibase.version>4.31.1</liquibase.version>
<log4j2.version>2.24.3</log4j2.version>
<logback.version>1.5.25</logback.version>
<lombok.version>1.18.42</lombok.version>
<mariadb.version>3.5.7</mariadb.version>
<maven-antrun-plugin.version>3.1.0</maven-antrun-plugin.version>
<maven-assembly-plugin.version>3.7.1</maven-assembly-plugin.version>
<maven-clean-plugin.version>3.4.1</maven-clean-plugin.version>
<maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
<maven-dependency-plugin.version>3.8.1</maven-dependency-plugin.version>
<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
<maven-enforcer-plugin.version>3.5.0</maven-enforcer-plugin.version>
<maven-failsafe-plugin.version>3.5.4</maven-failsafe-plugin.version>
<maven-help-plugin.version>3.5.1</maven-help-plugin.version>
<maven-install-plugin.version>3.1.4</maven-install-plugin.version>
<maven-invoker-plugin.version>3.9.1</maven-invoker-plugin.version>
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
<maven-javadoc-plugin.version>3.11.3</maven-javadoc-plugin.version>
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
<maven-shade-plugin.version>3.6.1</maven-shade-plugin.version>
<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
<maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version>
<maven-war-plugin.version>3.4.0</maven-war-plugin.version>
<micrometer.version>1.15.8</micrometer.version>
<micrometer-tracing.version>1.5.8</micrometer-tracing.version>
<mockito.version>5.17.0</mockito.version>
<mongodb.version>5.5.2</mongodb.version>
<mssql-jdbc.version>12.10.2.jre11</mssql-jdbc.version>
<mysql.version>9.5.0</mysql.version>
<native-build-tools-plugin.version>0.10.6</native-build-tools-plugin.version>
<nekohtml.version>1.9.22</nekohtml.version>
<neo4j-java-driver.version>5.28.10</neo4j-java-driver.version>
<netty.version>4.1.130.Final</netty.version>
<opentelemetry.version>1.49.0</opentelemetry.version>
<oracle-database.version>23.7.0.25.01</oracle-database.version>
<oracle-r2dbc.version>1.3.0</oracle-r2dbc.version>
<pooled-jms.version>3.1.9</pooled-jms.version>
<postgresql.version>42.7.9</postgresql.version>
<prometheus-client.version>1.3.10</prometheus-client.version>
<prometheus-simpleclient.version>0.16.0</prometheus-simpleclient.version>
<pulsar.version>4.0.8</pulsar.version>
<pulsar-reactive.version>0.6.0</pulsar-reactive.version>
<quartz.version>2.5.2</quartz.version>
<querydsl.version>5.1.0</querydsl.version>
<r2dbc-h2.version>1.0.1.RELEASE</r2dbc-h2.version>
<r2dbc-mariadb.version>1.3.0</r2dbc-mariadb.version>
<r2dbc-mssql.version>1.0.4.RELEASE</r2dbc-mssql.version>
<r2dbc-mysql.version>1.4.1</r2dbc-mysql.version>
<r2dbc-pool.version>1.0.2.RELEASE</r2dbc-pool.version>
<r2dbc-postgresql.version>1.0.9.RELEASE</r2dbc-postgresql.version>
<r2dbc-proxy.version>1.1.6.RELEASE</r2dbc-proxy.version>
<r2dbc-spi.version>1.0.0.RELEASE</r2dbc-spi.version>
<rabbit-amqp-client.version>5.25.0</rabbit-amqp-client.version>
<rabbit-stream-client.version>0.23.0</rabbit-stream-client.version>
<reactive-streams.version>1.0.4</reactive-streams.version>
<reactor-bom.version>2024.0.14</reactor-bom.version>
<rest-assured.version>5.5.7</rest-assured.version>
<rsocket.version>1.1.5</rsocket.version>
<rxjava3.version>3.1.12</rxjava3.version>
<saaj-impl.version>3.0.4</saaj-impl.version>
<selenium.version>4.31.0</selenium.version>
<selenium-htmlunit.version>4.30.0</selenium-htmlunit.version>
<sendgrid.version>4.10.3</sendgrid.version>
<slf4j.version>2.0.17</slf4j.version>
<snakeyaml.version>2.4</snakeyaml.version>
<spring-amqp.version>3.2.9</spring-amqp.version>
<spring-authorization-server.version>1.5.5</spring-authorization-server.version>
<spring-batch.version>5.2.4</spring-batch.version>
<spring-data-bom.version>2025.0.8</spring-data-bom.version>
<spring-framework.version>6.2.15</spring-framework.version>
<spring-graphql.version>1.4.4</spring-graphql.version>
<spring-hateoas.version>2.5.1</spring-hateoas.version>
<spring-integration.version>6.5.6</spring-integration.version>
<spring-kafka.version>3.3.12</spring-kafka.version>
<spring-ldap.version>3.3.5</spring-ldap.version>
<spring-pulsar.version>1.2.14</spring-pulsar.version>
<spring-restdocs.version>3.0.5</spring-restdocs.version>
<spring-retry.version>2.0.12</spring-retry.version>
<spring-security.version>6.5.7</spring-security.version>
<spring-session.version>3.5.4</spring-session.version>
<spring-ws.version>4.1.2</spring-ws.version>
<sqlite-jdbc.version>3.49.1.0</sqlite-jdbc.version>
<testcontainers.version>1.21.4</testcontainers.version>
<testcontainers-redis-module.version>2.2.4</testcontainers-redis-module.version>
<thymeleaf.version>3.1.3.RELEASE</thymeleaf.version>
<thymeleaf-extras-data-attribute.version>2.0.1</thymeleaf-extras-data-attribute.version>
<thymeleaf-extras-springsecurity.version>3.1.3.RELEASE</thymeleaf-extras-springsecurity.version>
<thymeleaf-layout-dialect.version>3.4.0</thymeleaf-layout-dialect.version>
<tomcat.version>10.1.50</tomcat.version>
<unboundid-ldapsdk.version>7.0.4</unboundid-ldapsdk.version>
<undertow.version>2.3.22.Final</undertow.version>
<versions-maven-plugin.version>2.18.0</versions-maven-plugin.version>
<vibur.version>26.0</vibur.version>
<webjars-locator-core.version>0.59</webjars-locator-core.version>
<webjars-locator-lite.version>1.1.3</webjars-locator-lite.version>
<wsdl4j.version>1.6.3</wsdl4j.version>
<xml-maven-plugin.version>1.1.0</xml-maven-plugin.version>
<xmlunit2.version>2.10.4</xmlunit2.version>
<yasson.version>3.0.4</yasson.version>
</properties>
这就是为什么我们没有指定版本但是他有版本的原因,所以我们说使用maven的话会出现版本冲突问题,而现在我们使用Spring的话,他就会为我们管理这件事情,从而解决版本冲突问题了。
代码相关解释
删除不相关的文件


最终我们有用的文件或者目录是:src 和pom.xml ,【当然如果有必要git的话就留一下.gitignore文件】,再强调一下,只有src 和pom文件有用,接下来我们就分别介绍这两个
pom文件
xml
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.10</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zhongge</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-demo</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.5.10</version>
</plugin>
</plugins>
</build>
</project>
以下是我们的XML的声明,不用管,他会自动生成
xml
<?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">
</project>
以下是项目的版本号
xml
<modelVersion>4.0.0</modelVersion>
以下是我们的SpringBoot版本号,版本号是可以修改的
xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.10</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
以下是项目信息:组织ID,项目ID,项目版本,项目名称,项目描述
xml
<groupId>com.zhongge</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-demo</name>
<description>Demo project for Spring Boot</description>
以下是从SpringBoot 3.3.1版本开始添加的部分,这部分主要是声明版权、开发人员、链接等等信息,他们是没有用的,可以直接删除
xml
<url/>
<licenses><!--版权-->
<license/>
</licenses>
<developers><!--开发人员-->
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
以下是JDK的版本
xml
<properties>
<java.version>17</java.version>
</properties>
以下是咱们的依赖,多个依赖放在dependencies中,每个依赖放在dependency中
xml
<dependencies>
<!--进行web开发的依赖-->
<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>
以下是项目的打包方式
xml
<build>
<plugins><!--插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.5.10</version>
</plugin>
</plugins>
</build>
src目录
2个目录

test目录下

main目录下

对比如下
| 目录 | 存放文件 | 是否编译 | 输出位置 | 核心特点 |
|---|---|---|---|---|
| src/main/java | .java 源代码 | 是(编译为.class) | target/classes/ 对应包目录 | 包名和目录层级强绑定 |
| src/main/resources | 各类资源文件 | 否(原文件复制) | target/classes/ 原目录结构 | 自定义目录结构,运行时直接读取 |
java目录示例结构
text
src/main/java/
├── com/
│ └── example/
│ ├── controller/ # 控制器类
│ ├── service/ # 业务逻辑类
│ ├── dao/ # 数据访问层
│ ├── model/ # 实体类
│ ├── config/ # 配置类
│ └── Application.java # 主启动类
resources目录示例结构
text
src/main/resources/
├── application.yml # 主配置文件
├── static/ # 静态资源
│ ├── css/
│ ├── js/
│ └── images/
├── templates/ # 模板文件
│ └── index.html
├── mapper/ # MyBatis映射文件
│ └── UserMapper.xml
├── i18n/ # 国际化
│ └── messages.properties
└── logback-spring.xml # 日志配置
启动类

第一个SpringBoot程序
在咱们的包下建一个HelloController类,写完之后我们就重新启动类

java
package com.zhongge.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName HelloController
* @Description TODO 第一个SpringBoot程序
* @Author 笨忠
* @Date 2026-02-03 10:13
* @Version 1.0
*/
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello spring boot";
}
}
然后通过浏览器访问我们的服务:http://127.0.0.1:8080/hello

路径解释
http://127.0.0.1:8080/hello路径是怎么来的?
我们的URL是:协议+域名[ip+端口号]+资源路径+查询字符串
- IP:127.0.0.1是本机
- 端口号port:8080是我们tomcat
一个进程可以有多个端口号,但是一个端口号只能对应一个进程。就好比是我们一个人可以有多个手机号码,但是呢是一个手机号码只能对应一个人。
tomcat
tomcat是一个web服务器,简单理解他就是运行服务的,也就是我们写的那些代码,到时候都是拿到我们的web服务器上去运行的,浏览器与服务器之间的数据交互,依托的正是 HTTP 协议。Web 服务器对 HTTP 协议做了封装处理,程序员无需直接操作协议(比如自行编写代码解析 HTTP 协议的规则),让 Web 开发的流程更便捷。也正因如此,Web 服务器也被称作 WWW 服务器、HTTP 服务器,核心功能是为用户提供网络信息的浏览服务。常见的 Web 服务器包括:Apache、Nginx、IIS、Tomcat 、Jboss 等。SpringBoot 框架内置了 Tomcat 服务器,无需额外配置就能直接运行程序。Tomcat 的默认端口号为 8080,因此我们开发的程序默认也通过 8080 端口进行访问。
我们的tomcat和spring是两家人,我们spring程序不一定使用tomcat运行,我们的tomcat也不一定运行spring程序,只不过我们现在是spring集成了tomcat,所以呢我们无需去安装tomcat,直接就可以运行
请求路径的分析

首先呢我们通过这个HTTP协议,我们找到这个对应的主机,那么在找到主机之后是主机上的哪一个程序呢?是8080进程那个程序,然后找到这个程序之后呢,我们访问这个程序里面的哪些资源呢?是hello这个路径里面的资源。
输入网址 :http://127.0.0.1:8080/hello
- IP 地址解析:URL 中的127.0.0.1是本机回环地址,用于定位当前使用的计算机(即本机),无需通过外部网络即可实现本地通信。
- 端口号作用:8080是端口号,用于精准找到本机上正在运行的对应进程 ------ 也就是占用 8080 端口的本地程序(通常是内置 Tomcat 的 SpringBoot 应用)。
- 资源路径含义:/hello是请求的资源路径,资源本质是计算机中的数据,而 Web 资源特指通过网络可访问的、存放在服务器上的数据。该 URL 的核心目的是:向本机 8080 端口的程序请求/hello路径对应的资源数据。
访问出错问题
404
问题
我将路径改为/hello/sayhi
java
@RestController
public class HelloController {
//修改路径
@RequestMapping("/hello/sayhi")
public String hello() {
return "hello spring boot";
}
}

原因
404 状态码表示用户请求访问的资源不存在,大概率是请求 URL 的资源路径书写错误导致。
解决
观察 HTTP 请求的具体路径,快速定位路径不匹配问题。【可通过 Fiddler 工具抓包】
500
问题
如果后端代码出异常:
java
@RestController
public class HelloController {
@RequestMapping("/hello/sayhi")
public String hello() {
int a = 1 / 0; //异常代码
return "hello spring boot";
}
}

原因
500 状态码表示服务器内部错误,通常是服务器执行代码时触发未处理的异常(如程序逻辑错误导致服务器异常)
解决
出现500大概率就是后端出问题了,那么就赶紧去看后端哪里出问题了
无法访问此网站
问题

原因
具体诱因多为服务未成功启动、访问的 IP 地址错误或端口号书写错误 / 被占用
解决
出现这样的情况就赶紧去看一下,你的服务器启动没,IP地址端口号那些有问题没。
补充其他状态码
为方便开发中快速核对,整理高频状态码速查【不要背,要多查】:
| 类别 | 核心状态码 | 含义 / 排查重点 |
|---|---|---|
| 2xx 成功 | 200 | 请求成功,正常返回数据 |
| 201 | 成功创建资源(新增 / 上传场景) | |
| 3xx 重定向 | 302 | 临时重定向(如未登录跳转到登录页) |
| 304 | 资源未修改,使用本地缓存 | |
| 4xx 客户端错误 | 400 | 请求参数 / 格式错误 |
| 401 | 未认证,需先登录 | |
| 403 | 无权限访问资源 | |
| 404 | 资源路径不存在,检查 URL | |
| 405 | HTTP 方法不匹配(如 GET/POST 混用) | |
| 5xx 服务器错误 | 500 | 服务器内部代码异常,查控制台日志 |
| 502 | 网关错误,检查上下游服务连通性 | |
| 503 | 服务暂不可用(过载 / 维护) | |
| 504 | 网关超时,检查接口执行效率(如查询超时) |
那么本期我们就到此结束,通过上述的学习,我们就可以轻松搭建好一个SpringBoot程序了。