跳到主要内容 Spring Boot 快速入门指南 | 极客日志
Java java
Spring Boot 快速入门指南 Spring Boot 快速入门流程,涵盖 Maven 基础概念、仓库配置及依赖管理,以及 Spring Boot 项目的创建与启动。内容包括本地与中央仓库设置、依赖传递与排除、IDEA 插件安装、pom.xml 配置解析,并通过 Hello World 示例演示了 Controller 编写与常见错误排查(如 404、500 错误)。旨在帮助开发者快速搭建环境并运行首个 Spring Boot 应用。
不知所云 发布于 2026/2/5 更新于 2026/4/18 1.3K 浏览Spring Boot 快速入门
完成 Spring Boot 环境搭建,并使用其创建一个项目,输出 HelloWorld。
Maven
Maven 基本概念
什么是 Maven 呢?
官方地址 https://maven.apache.org/index.html
Apache Maven is a software project management and comprehension tool. Based on the concept of a object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
Maven 是一个软件项目的管理工具,基于 POM(Project Object Model, 项目对象模型),可以通过一小段信息描述去管理项目的构建、报告和文档的项目管理工具。
简单来说就是可以通过 pom.xml 文件配置就可以获取对应外部 jar 包。
为什么要学习 Maven 呢
其简单、方便提高开发效率,减少开发 Bug,并且 Maven 中功能丰富,这里主要介绍的是项目构建和项目依赖。
Maven 创建
项目构建
IDEA 中集成了 Maven,所以无需安装即可使用。
IDEA 创建 Maven 项目
此时左侧就会自动生成一个 pom.xml 文件
此时右侧也有一个 Maven
如果右边没有显示的话,右键点击我们这个项目,此时有个 Add Framework Support,此时如果里面有 Maven 勾选上就行 ,此时就会显示了,如果没有 Maven 说明右侧显示了。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Maven 中提供了标准的、跨平台 (Windows、Linux、MacOS 等) 的自动化项目构建方式。
当我们开发一个项目之后,代码需要编译、测试、打包、发布等流程,每次代码有修改的地方,都要重复操作,这个流程如果重复执行还是很麻烦的,因此 Maven 提供了一些简单命令来完成项目构建。
会有一下功能,此时如果点击了一个功能,其会将其所在位置上面功能都执行一遍。
例如此时点击 package 打包 ,将其打包成 jar 包 (普通 java 库) 或者 War 包 (Web 应用),此处可以点击右侧 Maven 中 package 进行打包,也可以通过命令行通过 命令行 mvn package 进行打包 。
此时这里是普通 Java 库,所以这里会打包成 jar 包。
此时这里就会自动生成一个 target 文件,里面有刚才的 jar 包。
如果此时使用 Maven 中的 clean 命令。
// 删除之前创建的文件主要是 target 目录
mvn clean
此时将刚才 package 创建的 target 目录中所有东西都删除了 。
管理依赖 Maven 是一个项目管理工具,里面的 pom.xml 文件部署获取对应 jar 包,而不是手动创建 jar 包。
依赖:当前项目运行所需要的 jar 包 。
像以前所学的 JDBC 时,需要手动下载 mysql-connector-java 包 ,并将其放到项目中,通过才可以通过一些语句对 MySQL 数据库进行增删查改操作。
有了 Maven 直接在 pom.xml 中的 dependencies 标签中添加对应的 依赖坐标 。
<dependencies > </dependencies >
<dependencies >
<dependency >
<groupId > mysql</groupId >
<artifactId > mysql-connector-java</artifactId >
<version > 8.0.30</version >
</dependency >
</dependencies >
这里 groupId 是组织 id,artifactId 是 jar 包名称,version 是包的版本。
保存以后,其就会将此时 mysql 对应的 jar 包放进来。
但是发现一个问题,我们刚才只导入了 mysql-connector-java 包,但是此时它为什么把 protobuf-java 这个包也加入进来了呢?这个是传递依赖问题。
比如:A 依赖 B,B 依赖 C,此时 A 项目引入 B 时候,也需要将 C 引入进来。
像如果我们要吃火锅,需要准备锅,食材,调料等等都要进行准备好,如果少一个就可能无法吃。
但是此时的 Maven 就像我们点了一个外卖,商家直接把所有食材,调料甚至把锅也带来了,把可能需要的都带来了。
此时这里 Jar A 和项目 B 都是项目 A 直接依赖 。
Jar B、Jar C……都是 间接依赖 。
当然依赖虽然把所有需要的都打包进来,虽然很好,但是此时可能会出现这个项目依赖 Jar C,这个也依赖 Jar C,此时 导入两次 Jar C 并且可能导入版本不一样因此出现冲突 ,此时可能不一定需要进行排包,需要具体情况具体分析。
<dependencies >
<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 >
</dependencies >
此时就会把 mysql 所依赖的 jar 包进行了删除。
依赖调解:
A -> B -> C -> X(1.0)
A -> D -> X(2.0)
此时 Maven 会选择最短路径优先原则选择依赖,此时就会选择 X(2.0) 当然我们也可以进行手动指定版本。
File -> setting -> Plugins -> '搜索 Maven Helper' 插件。
安装完以后,installed 中将 Maven Helper 勾选上 Ok Apply 需要重启 IDEA。
此时打开 pom.xml 文件中下面就会有两个东西。
点击 Dependency Analyzer 里面放了对应 Jar 包。
此时点击 Exclude 就可以进行排除依赖 。
其会 自动更新 pom.xml 文件内容 。
Maven 仓库 <dependencies >
<dependency >
<groupId > mysql</groupId >
<artifactId > mysql-connector-java</artifactId >
<version > 8.0.30</version >
</dependency >
</dependencies >
为什么这里短短几行就可以将其对应 Jar 包导入进来呢?
这个代码被称为 坐标 ,是唯一的。
Maven 中,根据 groupId、artifactId、version 进行配置,唯一标识一个 jar 包,缺一不可,此时在 pom.xml 文件中写下这些东西,点击刷新,Maven 会根据坐标的配置,去仓库中找对应 Jar 包下载进来 。
Maven 仓库分为两大类:本地仓库和远程仓库 ,其中远程仓库又分为中央仓库、私服和其他公开库等等。
本地仓库 本地仓库 :自己计算机上一个目录 (专门存放 Jar 包的文件夹)。
因此找对应 Jar 包会先从本地仓库进行找,找到了就直接引用,没找到就从远程仓库中找。
File -> setting -> Build Tools -> Maven。
Local repository 这个最开始是空的,但是随着 Maven 的使用,该仓库下会越来越多 Jar 包。
这里默认是在 C 盘中,因为未来可能会下载更多的文件,因此将其放入其他盘中,此时需要将这里.m2 文件拷贝出来,放到其他盘文件中,最后将这个保存位置放到其他盘即可。
中央仓库
私有服务器 私服:一般是由公司团队自己搭建的私有仓库。
私服是属于某个公司的,需要一定的权限才可以访问。
先从本地仓库中获取,如果存放直接返回。
如果本地仓库没有,从私有仓库中找。
私有仓库也没有,才会从中央仓库中,不存在就会报错。
并且如果中央仓库存在,也会先将其缓冲到私服之后,在缓存到本地仓库,再从 Maven 下载中提供服务。
因为中央仓库在国外,所以下载会比较慢,因此优先使用国内的一些镜像网站会快一点。
File -> setting。
上面已经将这里下载到本地仓库设置到了 D 盘中。
这里将此时的 setting 文件也进行修改。
将这个放到对应 maven 中 setting.xml 文件中 mirrors 标签下。
<mirror >
<id > aliyunmaven</id >
<mirrorOf > *</mirrorOf >
<name > 阿里云公共仓库</name >
<url > https://maven.aliyun.com/repository/public</url >
</mirror >
但是上面设置 Maven 存放位置,和从哪里下载都是对这个项目进行的修改,如果新创建一个 Maven 项目中又会恢复到默认,因此这里需要设置。
File -> New Projects Setup -> Setting for New Projects ->
此时这里和上面一样的设置 Maven 下载源和存储到哪里。
Spring Boot 程序 Spring 让 Java 程序更加 快速,简单和安全 。Spring 对于 速度、简单性和生产力 的关注使其成为世界上最流行的 Java 框架,现在的 Spring 已经形成了自己的生态圈,开发中也倾向于使用 Spring 官方提供的技术。
Spring 中有好多项目,都是基于 Spring Framework 开发的,因为其配置多,入门难,所以 Spring 为了简化开发,创造出来 Spring Boot (Spring 脚手架)。
脚手架。
Spring Boot 项目创建 要先安装 Spring Boot Helper 插件,社区版需要这个插件,专业版不需要安装。
安装好的这个 zip。
File -> sttings -> Plugins -> Install Plugin from Disk…… 选择下载的这个插件的 zip 文件即可。
此时新建项目里面就有这个 Spring Boot 选项。
此时 创建就会加载一些包 ,并且第一次打开 Spring Boot 项目需要加载很久,因为这些东西没有加载到本地仓库,此时这里采用国内源这样下载就会快一点。
src/main/java : Java 源代码。
src/main/resources :静态资源或配置文件。
/static :静态资源文件 ,像 html、css、JS 等静态文件不需要服务器数据进行绑定的页面。
/templates :需要服务器动态渲染的数据文件。
src/test/java :测试源代码。
target :编译后的文件路径。
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.7</version >
<relativePath />
</parent >
<groupId > com.example</groupId >
<artifactId > demo</artifactId >
<version > 0.0.1-SNAPSHOT</version >
<name > 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.7</version >
</plugin >
</plugins >
</build >
</project >
主要关注 dependencies 这个标签下的东西。
引入了两个依赖。
spring-boot-starter-web :web 开发所需要的常见依赖。
spring-boot-starter-test :单元测试所需要的常见依赖。
发现这两个依赖并没有确定版本号,那 他的版本号是从哪里来的呢 ?
因为每创建一个 SpringBoot 工程,都有一个父工程,依赖的版本号,由父工程统一管理,因此这里是 通过父工程自动引入所指定的版本号 。
启动项目 package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello () {
return "hello String Boot" ;
}
}
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main (String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
可能出现的错误 出现 404 大概是这里 url 路径不正确导致的。
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello () {
return "hello String Boot" ;
}
}
500 错误
一般是因为服务器内部错误,程序遇到特殊情况导致服务器崩溃。
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello () {
int ret = 10 / 0 ;
return "hello String Boot" ;
}
}
此时这里 10/0 除数不可以为 0,运行程序并不会出错,但是 当访问后就会出现错误日志 。
服务器启动失败会出现这种问题,需要看 Tomcat 日志看是否有错误。
Spring Boot 就是为了快速开发 Spring 诞生。
提供了添加依赖功能,快速集成框架。
内置 web 程序,直接运行和部署程序。
可以通过注解和配置的方式进行开发。