Spring Boot入门教程:60分钟快速上手
开篇:Spring Boot是什么?能做什么?

Spring Boot 是一个基于 Java 的框架,它极大地简化了使用 Spring 框架进行项目开发的流程。你可以把它理解为一套“自动化工具包”,帮助开发者快速搭建、运行并维护企业级应用。它的核心理念是“约定优于配置”,也就是说,在很多情况下,Spring Boot 会自动帮你把该配的东西都配好,你只需要专注于业务逻辑的实现。
举个简单的例子,如果你想开发一个网站后端系统,比如博客平台或商品管理系统,Spring Boot 能帮你处理服务器部署、数据库连接、网页路由等一系列繁琐的工作,让你更高效地完成开发任务。
为什么选择学习 Spring Boot?
- 易上手:它隐藏了很多复杂的底层配置细节,让新手也能轻松启动项目。
- 功能强大:支持 REST API、数据库操作、安全控制、任务调度等多种功能。
- 社区活跃:有庞大的开发者社区和丰富的文档资源,方便查阅与交流。
- 市场需求大:Java 是目前企业级后端开发最主流的语言之一,而 Spring Boot 更是被广泛采用的技术栈。
如果你是编程新手,并想迈入 Web 后端开发的大门,Spring Boot 将是一个理想起点。接下来的教程将引导你一步步从零开始,亲手创建一个简单的项目,感受 Spring Boot 的魅力。
环境准备:构建你的开发环境

在动手写代码之前,我们需要准备好几个关键的软件工具。这一步非常重要,因为它们是你编写、调试和运行 Spring Boot 项目的基石。
1. 安装 JDK(Java Development Kit)
JDK 是开发 Java 应用必须安装的工具,它包含 Java 编译器、运行时环境以及一些开发用的工具库。
下载地址:
建议使用 JDK 17 或更高版本,可以从 Oracle 或 Adoptium(Temurin) 下载。
安装步骤:
- 下载对应操作系统版本的 JDK。
- 双击安装程序,按照提示点击“下一步”直到安装完成。
- 验证安装是否成功:打开终端(Mac/Linux)或命令行(Windows),输入
java -version和javac -version。如果看到类似如下输出,则表示安装成功:java version "17.0.8" 2023-07-18 LTS javac 17.0.8
常见问题解答:
Q: 提示找不到 Java 命令怎么办?
A: 检查系统环境变量中是否添加了 JDK 的安装路径(尤其是 PATH)。
2. 安装 IntelliJ IDEA(推荐 IDE)
IntelliJ IDEA 是一款专为 Java 开发者设计的强大集成开发环境(IDE)。它不仅提供了代码编辑、调试等功能,还内置了对 Spring Boot 的良好支持,能显著提高开发效率。
下载地址:
访问 JetBrains 官方网站,下载 Community 版本即可(免费且功能已足够满足初学者需求)。
安装步骤:
- 下载完成后运行安装程序。
- 根据向导提示选择安装目录,一路点击“下一步”直至完成。
- 打开 IntelliJ IDEA,根据提示进行基础配置。
3. 配置 Maven(项目依赖管理工具)
Maven 是一种项目依赖管理工具,可以自动下载和管理项目所需的第三方类库(如 Spring Boot 提供的各种组件)。
检查是否已安装:
- 打开终端或命令行,输入
mvn -v。如果看到版本信息,说明已安装。 - 如果没有输出,请前往 Maven 官网 下载 ZIP 包,并参考官方文档进行安装。
配置本地仓库(可选优化):
默认情况下,Maven 会将所有依赖文件保存在一个默认位置(如 Windows 上是 C:\Users\用户名\.m2\repository)。你可以通过修改 Maven 的配置文件 settings.xml 来更改存储路径,避免系统盘空间紧张。
4. 创建第一个 Spring Boot 项目
步骤一:访问 Spring Initializr 进入 Spring Initializr 网站,这是由 Spring 官方提供的项目初始化工具。
步骤二:填写项目信息
- Project: Maven(默认)
- Language: Java(默认)
- Spring Boot Version: 使用最新稳定版,如 3.x
- Group: 输入组织名称,例如
com.example - Artifact: 输入项目名,如
demo - Name: 保持默认即可
- Description: 可选,简单描述项目用途
- Package Name: 默认值通常是 Group + Artifact,比如
com.example.demo
步骤三:添加依赖
- 点击 Add Dependencies,搜索以下两个常用模块:
- Spring Web(用于构建 Web 应用)
- Spring Data JPA(用于与数据库交互,可选但建议)
步骤四:生成并导入项目
点击页面右下角的 Generate 按钮,下载生成好的 .zip 文件。解压后用 IntelliJ IDEA 打开该项目。
步骤五:验证项目结构 打开 IntelliJ IDEA 中的项目结构,你会看到标准的 Maven 目录布局:
src/
├── main/
│ ├── java/ —— 存放 Java 源码
│ └── resources/ —— 存放静态资源和配置文件
└── test/ —— 测试代码
恭喜!你已经成功搭建好了 Spring Boot 的开发环境。现在可以开始编写代码了!
Spring Boot核心概念:通俗讲解关键知识点

要使用 Spring Boot 构建应用,我们首先需要了解一些核心概念。这些内容可能听起来专业,但我们尽量用简单的生活比喻来解释。
1. 什么是 REST API?
REST API 是现代 Web 后端开发中最常见的通信方式。它类似于日常生活中的“点餐系统”——当你去餐馆吃饭时,你会向服务员说出自己想要的食物,服务员再返回对应的菜品;而在 REST API 中,客户端(比如网页或手机 App)发送请求到服务器,服务器再响应数据。
举个例子,假设你在浏览器里访问一个获取用户列表的接口:
GET http://localhost:8080/users
这个请求告诉服务器:“我要查看所有用户的信息”。服务器接收到后,就会返回一段 JSON 数据(一种通用的数据格式),里面包含了用户信息。这就是典型的 REST API 场景。
在 Spring Boot 中,我们可以非常容易地定义这样的接口,稍后我们会通过代码实例来演示这一点。
2. 什么是 Controller?
Controller 相当于餐厅里的服务员——它负责接收用户的请求,并给出相应的回应。在 Spring Boot 应用中,每一个 Controller 都是一段 Java 类,专门用来处理特定的 URL 请求。
举个例子,你有一个 /users 接口,希望返回用户列表。你需要创建一个 UserController 类,并在这个类中定义处理该请求的方法。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping
public List<String> getAllUsers() {
return Arrays.asList("Alice", "Bob", "Charlie");
}
}
在这段代码中:
@RestController:表示这是一个处理 HTTP 请求的类。@RequestMapping("/users"):告诉 Spring 该类处理以/users开头的所有请求。@GetMapping:表明这个方法专门处理 GET 请求。- 方法
getAllUsers():返回一个用户列表,实际开发中这里通常会调用数据库或其他服务。
你可以把这个 Controller 看作是前端请求与后端逻辑之间的桥梁。
3. 什么是 Bean?
Bean 是 Spring 框架中的一个重要概念,也是 Spring Boot 的核心机制之一。你可以把它理解为 Spring 管理的一个对象——比如一个服务类、数据库连接池等等。
打个比方,Bean 就像厨房里的厨师。你想吃菜的时候,不需要自己去找食材、切菜、炒菜,而是直接请厨房里现成的厨师去做饭。Spring 也是一样,当你需要用到某个对象时,可以直接让 Spring 帮你创建并提供这个对象。
如何定义一个 Bean? 你可以通过注解的方式让 Spring 自动管理某个类。常用的注解包括:
@Component:适用于一般性的类。@Service:专门用于业务逻辑层的服务类。@Repository:用于与数据库交互的数据访问层。
举个例子:
@Service
public class UserService {
public String getUserName(int id) {
return "User" + id;
}
}
然后你可以在 Controller 中使用它:
@GetMapping("/{id}")
public String getUserById(@PathVariable int id) {
return userService.getUserName(id);
}
在这里,userService 就是一个由 Spring 自动创建和管理的 Bean。你不需要手动 new 这个对象,Spring 会帮你完成这项工作。
4. 什么是 Dependency Injection(DI)?
DI 即“依赖注入”,它是 Spring 管理 Bean 的重要手段之一。简单来说,就是让 Spring 自动把你需要的对象“塞”进去,而不是你自己主动去创建它们。
回到我们的厨房比喻,依赖注入就像是你在点菜时,服务员自动给你安排好座位、餐具,甚至提前知道你想喝什么饮料。你只管享受服务,无需操心后台如何运作。
上面提到的 UserService 就是一个典型的应用场景:
@RestController
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
// ...其他代码
}
在这里,Spring 会自动把 UserService 实例传递给 UserController,这就是依赖注入的过程。你只需声明你需要什么,Spring 就会在背后为你提供所需对象。
这些是 Spring Boot 中最重要的几个基本概念。它们构成了整个框架的核心思想,也为我们接下来的实际项目开发奠定了基础。
实战项目:跟着教程一步一步完成一个简单项目
在这个实战部分,我们将一起开发一个简单的“用户信息展示”Web 应用。它主要实现两个功能:
- 展示所有用户的信息列表
- 根据 ID 查询单个用户的信息
这个项目将会运用我们刚刚介绍的几个核心概念,帮助你快速掌握 Spring Boot 的开发流程。
第一步:新建一个 User Model(模型)
Model 代表的是我们处理的数据结构。在 Java 中,我们通常会创建一个类来表示某类数据。在这个项目中,我们要处理用户信息,所以我们需要创建一个名为 User 的类。
步骤:
在项目目录 src/main/java/com/example/demo 中创建一个新的包(package),比如叫做 model,然后在该包下创建一个 Java 类文件 User.java,内容如下:
package com.example.demo.model;
public class User {
private int id;
private String name;
// 构造函数
public User(int id, String name) {
this.id = id;
this.name = name;
}
// Getter 方法
public int getId() {
return id;
}
public String getName() {
return name;
}
// Setter 方法(如有需要)
public void setName(String name) {
this.name = name;
}
}
这段代码定义了一个 User 类,包含了两个属性:id 和 name,并提供了构造函数和 getter 方法。
第二步:创建一个 User Service(服务)
Service 层负责处理业务逻辑。在这个项目中,我们模拟一个简单的用户数据存储,比如内存中的一个列表。我们将使用一个 UserService 类来封装相关逻辑。
步骤:
在同一包目录下,创建新的类 UserService.java:
package com.example.demo.service;
import com.example.demo.model.User;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class UserService {
private final List<User> users = new ArrayList<>();
public UserService() {
// 初始化一些测试数据
users.add(new User(1, "Alice"));
users.add(new User(2, "Bob"));
users.add(new User(3, "Charlie"));
}
// 获取所有用户
public List<User> getAllUsers() {
return users;
}
// 根据 ID 查找用户
public User getUserById(int id) {
return users.stream()
.filter(user -> user.getId() == id)
.findFirst()
.orElse(null);
}
}
这段代码做了几件事情:
- 使用了
@Service注解,表示这是一个 Spring 管理的服务类。 - 在构造函数中初始化了一些用户数据。
- 提供了两个方法:
getAllUsers()用来返回所有用户,getUserById()用来根据 ID 查找特定用户。
第三步:创建一个 User Controller(控制器)
Controller 是处理 HTTP 请求的关键角色。我们将创建一个 UserController 类来处理用户的访问请求。
步骤:
在同一个包下,创建类 UserController.java:
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
// 获取所有用户
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
// 获取指定 ID 的用户
@GetMapping("/{id}")
public User getUserById(@PathVariable int id) {
return userService.getUserById(id);
}
}
这段代码的关键点:
- 使用
@RestController和@RequestMapping("/users")指定处理/users路径下的请求。 - 使用了
@Autowired注解来启用依赖注入,确保 Spring 正确地为我们注入UserService实例。 - 两个
@GetMapping分别处理获取全部用户和根据 ID 获取单个用户的请求。
第四步:运行并测试应用
现在我们的应用已经完成了,接下来让我们运行一下看看效果。
运行步骤:
- 在 IntelliJ IDEA 中找到主程序类(默认名字是
DemoApplication.java),它位于com.example.demo包下。 - 点击运行按钮(或使用快捷键 Shift + F10),等待项目启动完成。
测试步骤:
- 打开浏览器,访问以下链接:
- 查看所有用户:http://localhost:8080/users
- 查看单个用户(比如 ID=2):http://localhost:8080/users/2
你应该能看到类似如下格式的 JSON 输出:
[
{"id":1,"name":"Alice"},
{"id":2,"name":"Bob"},
{"id":3,"name":"Charlie"}
]
或者单独用户信息:
{"id":2,"name":"Bob"}
这个小项目虽然简单,但它涵盖了 Spring Boot 的几个核心功能:
- 如何定义数据模型(Model)
- 如何创建服务逻辑(Service)
- 如何构建 REST 接口(Controller)
- 如何管理依赖(DI)
通过这个实践练习,你应该对 Spring Boot 的基本结构有了初步的认识。接下来可以尝试扩展功能,比如添加用户、修改数据等。
新手常见问题解答
在学习和使用 Spring Boot 的过程中,新手常遇到一些让人困惑的问题。以下列出了一些最常见的疑问及其解答,希望能帮助你更快掌握开发技巧。
Q1:Spring Boot 启动时报错 “Port 8080 was already in use”
这个问题通常发生在本地端口被占用时。例如,你上次运行的应用没有关闭,导致 8080 端口仍然处于监听状态。
解决办法:
- 找出当前占用 8080 端口的进程:
- Windows:在命令行运行
netstat -ano | findstr :8080,记录 PID(进程 ID); - macOS/Linux:在终端运行
lsof -i :8080或netstat -tulpn | grep :8080。
- Windows:在命令行运行
- 终止该进程:
- Windows:在命令行运行
taskkill /PID <PID> /F; - macOS/Linux:运行
kill -9 <PID>。
- Windows:在命令行运行
- 重启 Spring Boot 应用。
另外的方法: 修改默认端口,在 application.properties 文件中设置:
server.port=8081
Q2:Controller 方法无法访问,提示 404 Not Found
出现这种情况通常是因为请求的 URL 不符合映射规则。
可能的原因及解决办法:
- 检查 Controller 是否缺少
@RestController或@RequestMapping注解。这两个注解必须存在,否则 Spring 不会将其识别为请求处理器。 - 确认访问的 URL 正确:比如你定义的路径是
/users,那访问地址应为http://localhost:8080/users。 - 检查是否有拼写错误:URL 是大小写敏感的,确保拼写完全一致。
- 查看启动日志:Spring Boot 启动时会在控制台打印所有注册的 REST 路由,确认你的 Controller 被正确加载。
Q3:Bean 注入失败,提示 No qualifying bean of type...
这类错误通常是因为 Spring 未能正确找到并注入某个依赖项。
可能的原因及解决办法:
- 目标类缺少
@Component、@Service或@Repository注解,Spring 不会自动管理未标注的类。 - 依赖类未正确注入到目标类:检查是否使用了
@Autowired注解或构造函数注入。 - 检查包扫描范围:确保你的类所在包在 Spring Boot 主类(
@SpringBootApplication)的子包内,这样才会被自动

评论 0