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

在我们开始学习 Spring Boot 之前,先来了解一下它是谁,以及它可以帮我们做什么。
Spring Boot 是谁?
Spring Boot 是一个由 Pivotal 团队开发的开源 Java 框架。它的核心理念是“开箱即用”,也就是说,你可以非常快速地搭建一个独立运行、生产级的应用程序,而不需要去繁琐地配置太多东西。
我们可以把它看作是一个 “Java 应用加速包”。如果你曾经使用过传统的 Spring 框架,你一定知道,要启动一个完整的 Spring 项目需要配置很多 XML 文件,还要导入各种依赖库。这在刚入门的时候会让人觉得特别麻烦,甚至有些令人望而却步。
而 Spring Boot 则简化了这些步骤,它内置了很多常用的功能和默认配置,让你可以专注于写代码本身,而不是花大量时间去配置各种环境。
我能用它做什么?
Spring Boot 特别适合用来开发企业级应用,比如后台管理系统、电商平台、金融系统等等。同时,它也非常适合构建 RESTful API 接口(也就是前后端分离项目中的后端部分)。你可以在很短的时间内搭建一个功能完善的 Web 服务,并且可以根据需求灵活扩展。
举个简单的例子:假设你想做一个博客网站的后端服务,你就可以用 Spring Boot 来创建一个项目,然后很快实现文章管理、用户注册登录、评论留言等功能。整个过程中,几乎不用自己手动去配置数据库连接、服务器设置等繁琐的工作,因为它已经帮你做好了。
总结一下:
- Spring Boot 是什么? 它是一个简化 Java 开发的框架,让开发者能够更快速地开发出高质量的 Web 应用。
- 你能用它做什么? 创建后端服务、REST API、微服务系统等,非常适合现代互联网企业的开发需求。
接下来,我们就从零开始一步步带你进入 Spring Boot 的世界!
环境准备:快速搭建你的第一个 Spring Boot 项目

在正式编写 Spring Boot 应用之前,我们需要准备好开发环境。虽然听上去有点复杂,但实际上只要按照下面几步来做,十分钟就能完成所有的安装和配置!
步骤一:安装 Java JDK
Spring Boot 是基于 Java 构建的,所以我们首先要确保电脑上有 Java 运行环境。建议安装 JDK 17 或更新版本。
Windows 用户:
- 访问 Oracle JDK 下载页面。
- 选择合适的版本下载并安装(推荐选择
.msi安装包)。 - 安装完成后,在命令提示符中输入以下命令验证是否安装成功:
java -version
如果出现类似如下的输出,说明安装成功:
java version "17.0.3" 2022-04-19 LTS
Java(TM) SE Runtime Environment (build 17.0.3+8-LTS-111)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.3+8-LTS-111, mixed mode, sharing)
macOS/Linux 用户:
同样访问上述链接,根据你的操作系统下载对应版本并安装。
步骤二:安装 IDE(推荐 IntelliJ IDEA)
IDE(集成开发环境)就像是程序员的“画板”,用来编写、调试和运行代码。我们推荐使用 IntelliJ IDEA Community Edition(社区版),这是一个完全免费的强大工具。
安装步骤:
- 前往 IntelliJ IDEA 下载页面。
- 根据系统下载 Community 版本(不要选 Ultimate 版,那是付费的)。
- 解压安装包,双击打开即可安装。
- 安装完成后启动 IDEA,按提示完成初始设置。
步骤三:创建 Spring Boot 项目
现在我们要使用 Spring Initializr 来创建一个新的 Spring Boot 项目。这是一个在线生成器,可以帮助我们快速生成基础项目结构。
操作步骤:
- 打开浏览器,访问 https://start.spring.io/。
- 在表单中填写如下信息:
- Project:Maven(Java 构建工具)
- Language:Java
- Spring Boot Version:选择最新稳定版,比如
3.x.x(当前版本可能略有不同) - Group:填入组织名称,例如
com.example - Artifact:项目的名称,比如
demo - Name 和 Package Name 保持默认即可
- 在 Dependencies(依赖项) 部分添加以下几个模块:
- Spring Web(用于构建 Web 应用)
- Spring Data JPA(用于数据库操作)
- H2 Database(测试用的轻量级数据库)
- 点击下方按钮 Generate,系统将自动生成一个 ZIP 格式的项目压缩包。
- 解压这个 ZIP 包,用 IntelliJ IDEA 打开这个文件夹(File -> Open -> 找到解压后的文件夹)。
启动项目:
- 打开 IDEA,等待 Maven 自动导入依赖。
- 寻找主类(带有
@SpringBootApplication注解的类),通常位于src/main/java/com/example/demo/DemoApplication.java。 - 右键点击该类,选择
Run 'DemoApplication'。 - 控制台中看到类似以下信息表示项目已成功启动:
Started DemoApplication in X.X seconds (JVM running for X.X)
至此,我们的 Spring Boot 项目就准备好了!接下来,我们将通过一个小项目快速掌握它的基本用法。
Spring Boot 核心概念讲解

在开始实战之前,我们先来了解几个 Spring Boot 中的核心概念。它们就像是组成房子的基本砖瓦,理解清楚之后,你在编写项目时就会更加得心应手。
1. Controller(控制器)
想象一下你正在设计一个餐厅的点餐系统。顾客说:“我要一份牛肉面。”这个时候你需要有一个服务员来接收请求并对厨房下订单。在 Spring Boot 里,“Controller”就是这个服务员的角色。
简单来说,Controller 就是用来处理 HTTP 请求的对象。它可以接受用户的访问,并决定返回什么样的数据。最常见的就是网页访问、API 接口等。
示例代码:
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "你好,欢迎来到我的网站!";
}
}
当你启动应用并访问 http://localhost:8080/hello 时,你会看到页面显示一句话:“你好,欢迎来到我的网站!”
在这个例子中:
@RestController表示这是一个控制器类;@GetMapping用于定义 GET 请求的路径;sayHello()方法返回的内容会直接显示在网页上。
2. Service(服务层)
继续刚才那个例子:当服务员接收到请求后,他会去找厨师做菜。这个“厨师”在 Spring Boot 中就是 Service 层。Service 层负责执行实际的业务逻辑,比如对数据进行计算、处理、调用第三方接口等。
示例代码:
@Service
public class GreetingService {
public String greet(String name) {
return "你好," + name + "!";
}
}
接着我们修改上面的 HelloController,让它调用这个服务:
@RestController
public class HelloController {
@Autowired
private GreetingService greetingService;
@GetMapping("/greet/{name}")
public String greet(@PathVariable String name) {
return greetingService.greet(name);
}
}
这里发生了什么呢?
@Service表示这是一个服务类;@Autowired是自动注入,Spring Boot 会自动把GreetingService实例放进HelloController;@PathVariable用于从 URL 中提取参数,比如/greet/zhangsan,name 就是zhangsan;- 最终调用了
greetingService.greet(name),并返回给用户。
这样我们就可以通过访问 http://localhost:8080/greet/zhangsan 得到一句个性化的问候语:“你好,张三!”
3. Repository(数据访问层)
现在让我们再加一个角色——仓库管理员。他负责管理食材,也就是“原材料”的存储和查找。在 Spring Boot 中,Repository 层负责与数据库交互,比如增删改查等操作。
我们以最简单的实体为例:用户表。
实体类:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getter 和 Setter(此处省略)
}
这里的注解说明:
@Entity表示这是数据库中的一张表;@Id表示这是主键;@GeneratedValue表示主键是自增长的;name和email是字段名,默认会映射为数据库列名。
接下来我们来写一个 Repository 接口:
public interface UserRepository extends JpaRepository<User, Long> {
}
没错,这就是一个接口,它继承了 JpaRepository,Spring Boot 会自动为我们实现 CRUD 操作(增删改查)。
4. 总结
我们再来理清这几个概念的关系:
| 层级 | 角色 | 职责 |
|---|---|---|
| Controller | 用户对接窗口 | 接收请求、调用服务并返回结果 |
| Service | 业务处理中心 | 处理逻辑、调用 Repository 操作数据 |
| Repository | 数据访问接口 | 直接与数据库打交道,执行增删改查 |
打个比方,就像是一家公司:
- Controller 是前台接待员,接待客户;
- Service 是部门主管,处理具体事务;
- Repository 是档案管理员,查找和修改资料。
明白了这些核心概念之后,我们就可以开始动手做一个完整的小项目啦!
实战项目:用 Spring Boot 搭建一个简单的博客系统

接下来我们将通过一个简单的博客系统项目来巩固前面学到的知识。这个项目主要包括:
- 文章列表展示
- 发布新文章
- 删除指定文章
让我们一步步跟着做,动手写代码!
第一步:定义文章实体类
首先我们需要一个数据模型来表示一篇文章。我们创建一个名为 Post 的类,并加上相应的注解:
@Entity
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title; // 标题
private String content; // 内容
private LocalDateTime publishedDate; // 发布时间
// Getter 和 Setter(此处省略)
}
这个类中的注解我们在前文已经见过:
@Entity表示它对应数据库中的一张表;@Id表示这是主键;@GeneratedValue表示主键是自增的;LocalDateTime是 Java 8 引入的新时间日期类型。
第二步:创建文章数据访问接口
接下来我们需要一个 Repository 接口,用于操作 Post 表的数据:
public interface PostRepository extends JpaRepository<Post, Long> {
}
这个接口非常简洁,因为 JpaRepository 已经提供了常用的增删改查方法。
第三步:编写文章服务类
为了处理文章相关的业务逻辑,我们来写一个服务类:
@Service
public class PostService {
@Autowired
private PostRepository postRepository;
public List<Post> getAllPosts() {
return postRepository.findAll();
}
public Post createPost(Post post) {
post.setPublishedDate(LocalDateTime.now());
return postRepository.save(post);
}
public void deletePostById(Long id) {
postRepository.deleteById(id);
}
}
解释一下关键代码:
getAllPosts()获取所有文章;createPost()新增一篇文章,并自动设置发布时间;deletePostById()根据 ID 删除文章;postRepository.save()和deleteById()都是 Spring Boot 提供的默认方法。
第四步:编写控制器
最后,我们需要一个控制器来接收外部请求:
@RestController
@RequestMapping("/api/posts")
public class PostController {
@Autowired
private PostService postService;
@GetMapping
public List<Post> getAllPosts() {
return postService.getAllPosts();
}
@PostMapping
public Post createPost(@RequestBody Post post) {
return postService.createPost(post);
}
@DeleteMapping("/{id}")
public void deletePost(@PathVariable Long id) {
postService.deletePostById(id);
}
}
这段代码的功能如下:
@RestController表示这是一个返回 JSON 数据的控制器;@RequestMapping("/api/posts")统一设定请求路径前缀;@GetMapping对应获取所有文章;@PostMapping对应新增文章;@DeleteMapping对应删除文章;@RequestBody表示参数是从请求体中读取的 JSON 数据;@PathVariable用于获取路径中的变量。
第五步:测试项目
现在我们来验证一下这个博客系统能不能正常工作。
启动项目后,你可以使用 Postman 或 curl 命令来进行测试。
1. 获取所有文章:
发送一个 GET 请求:
curl http://localhost:8080/api/posts
此时应该返回一个空数组,因为我们还没有添加任何文章。
2. 添加一篇新文章:
发送一个 POST 请求:
curl -X POST http://localhost:8080/api/posts \
-H "Content-Type: application/json" \
-d '{"title": "第一天写作", "content": "今天我写了人生第一篇文章"}'
你应该能看到类似如下的返回内容,其中包含了自动设置的发布时间和 ID:
{
"id": 1,
"title": "第一天写作",
"content": "今天我写了人生第一篇文章",
"publishedDate": "2024-03-24T15:30:00"
}
3. 删除一篇文章:
发送一个 DELETE 请求:
curl -X DELETE http://localhost:8080/api/posts/1
执行后再查看所有文章,你会发现那条记录已经被删除了。
新手常见问题解答
作为初学者,刚开始接触 Spring Boot 时可能会遇到一些常见的小问题。下面是几个大家经常问的问题,以及对应的解决办法。
1. 为什么启动 Spring Boot 项目时一直卡住?
原因分析: Spring Boot 启动慢有很多可能的原因,比如本地网络问题导致依赖下载失败、本地磁盘空间不足、JDK 版本兼容性问题、IDEA 缓存异常等。
解决办法:
- 检查你的网络连接是否正常,特别是在使用 Maven 下载依赖时;
- 尝试清理 Maven 缓存目录(通常在
C:\Users\用户名\.m2\repository); - 更新 IntelliJ IDEA 到最新版本;
- 如果怀疑是 JDK 问题,可以尝试更换为另一个 JDK 版本(如从 11 升级到 17)。
2. 访问不到接口,提示 404
原因分析: 404 表示找不到请求的资源。有可能是你写错了路径,也可能是 Spring Boot 没有正确扫描到你的 Controller。
解决办法:
- 检查你的
@RequestMapping和@GetMapping是否写对了; - 查看启动日志中是否有
Mapped字样的信息,例如Mapped [GET /api/posts] onto public java.util.List...,如果没看到相关输出,说明 Controller 没有被加载; - 确保你的 Controller 类上有
@RestController注解; - 主类所在的包是否包含 Controller 类(Spring Boot 默认只会扫描主类所在包及其子包)。
3. 无法注入 Service 或 Repository
错误提示:
有时候你会遇到 NullPointerException 或者 IDEA 报错说某个类没有被注入。
解决办法:
- 检查 Service 或 Repository 是否加了
@Service或@Repository注解; - 检查使用的地方是否正确使用了
@Autowired; - 如果你使用了构造函数注入,请确保构造函数被正确标注为
@Autowired(虽然不太常见); - 确保主类所在的包包含你要使用的组件(Spring Boot 只会在主类所在包及其子包中查找 Bean)。
4. 数据库连接失败或报错
错误提示:
启动时报错 Connection refused 或 Unknown database。
解决办法:
- 如果使用的是 H2 数据库,请检查
application.properties中的配置是否正确; - 如果使用 MySQL 或 PostgreSQL,请确认用户名、密码是否正确,以及数据库是否真的存在;
- 如果是第一次运行项目,Spring Boot 默认会自动建表,但不会自动创建数据库;
- 可以尝试关闭数据库防火墙,或者重新安装数据库服务。
5. 不知道下一步该怎么学怎么办?
建议:
- 从官方文档入手,熟悉 Spring Boot 的核心功能和特性;
- 动手练习更多小项目,比如员工管理系统、购物车、留言本等;
- 学习一些常用的中间件,比如 Redis 缓存、消息队列 RabbitMQ、定时任务 Quartz 等;
- 逐步深入 Spring Cloud,学会微服务架构设计;
- 了解 Spring Security 权限控制,为后续开发安全系统打基础。
下一步学习路径建议
恭喜你完成了今天的 Spring Boot 入门之旅!现在你已经掌握了它的基本使用方法,并且可以通过实践项目来加深理解。不过,这只是 Spring Boot 世界的第一步,接下来你可以沿着以下几个方向继续探索。

评论 0