Spring Boot入门教程:60分钟快速上手
大家好,我是一名工作5年的后端开发工程师。这几年带过不少新人,也辅导过转行的朋友学编程。我发现很多人一听到“Spring Boot”就有点发怵,觉得是高深莫测的“Java框架”。其实真没那么复杂!今天我就用最直白的方式,带你用60分钟完成第一个Spring Boot项目。
为什么写这篇教程?
因为我当初学的时候,也是被一堆术语绕晕了。后来才明白:Spring Boot的核心思想就是“约定大于配置”——它帮你把繁琐的设置都默认配好了,你只需要专注写业务逻辑。这篇文章会用实践驱动的方式,让你从零开始跑通一个能访问的Web服务,哪怕你之前只写过Python脚本也没关系!
1. Spring Boot是什么?能用来做什么?
简单说,Spring Boot是一个用于快速开发Java后端应用的工具包。它的最大特点就是“开箱即用”:
- 自动配置数据库、Web服务器等组件
- 内置Tomcat服务器(不用单独安装)
- 简化依赖管理(类似Python的pip install)
📌 类比理解:如果你用Python写过Flask或Django,Spring Boot在Java生态中的地位就和它们类似——都是帮你快速搭建Web应用的框架。
能做什么项目?
- 公司内部管理系统(如员工考勤)
- 手机App的后端接口(如用户登录、商品查询)
- 微服务架构中的单个服务模块
2. 环境准备(10分钟)
别担心,配置比你想的简单!我们需要三样东西:
| 工具 | 作用 | 安装建议 |
|---|---|---|
| JDK 17 | Java运行环境 | 推荐Oracle JDK或OpenJDK |
| IntelliJ IDEA | 代码编辑器 | 社区版免费,官网下载 |
| Maven | 依赖管理工具 | IDEA已内置,无需单独安装 |
验证安装是否成功
打开终端(Mac/Linux)或命令提示符(Windows),输入:
java -version
看到类似 openjdk version "17.0.8" 的输出就说明JDK装好了。
💡 新手注意:不要用JDK 8!虽然老项目常用,但Spring Boot 3.x要求JDK 17+。我当初就在这里卡了好久...
3. 核心概念速览(5分钟)
先搞懂这三个词,后面代码就清晰了:
3.1 什么是“后端”?
- 前端:你在浏览器看到的页面(HTML/CSS/JS)
- 后端:处理数据、逻辑、数据库交互的“幕后工作者”
- 两者通过 HTTP请求 通信(比如前端发
GET /users,后端返回用户列表)
3.2 Spring Boot的三大支柱
| 概念 | 通俗解释 | 对应代码位置 |
|---|---|---|
| Controller | 接收请求的“前台接待” | @RestController注解的类 |
| Service | 处理业务逻辑的“部门经理” | @Service注解的类 |
| Repository | 操作数据库的“仓库管理员” | @Repository注解的类 |
✨ 关键理解:90%的Spring Boot应用都遵循这个分层结构。就像Python Flask里的
@app.route函数,Controller就是你的入口点。
3.3 为什么不用Python而用Java?
这个问题很常见!其实:
- Python优势:语法简洁,适合数据分析/AI
- Java优势:强类型安全,高并发性能好,企业级应用生态成熟
- 选择建议:公司用什么就学什么!Spring Boot在银行、电商等大型系统中占主流
4. 实战:创建你的第一个项目(30分钟)
我们将做一个超简单的 “待办事项(Todo)API” ,支持添加和查询任务。全程只需写3个文件!
步骤1:用Spring Initializr生成项目
- 打开 https://start.spring.io
- 填写配置:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.x(选最新稳定版)
- Group:
com.example(包名规范) - Artifact:
todo-demo
- 添加依赖(Dependencies):
- Spring Web(必选!提供Web功能)
- Spring Data JPA(操作数据库)
- H2 Database(内存数据库,无需安装)
- 点击 Generate 下载zip包
🔧 避坑指南:不要手动创建项目!Initializr会自动生成标准目录结构,避免配置错误。
步骤2:导入项目到IDEA
- 解压下载的zip文件
- 打开IDEA →
File→Open→ 选择解压后的文件夹 - 等待Maven自动下载依赖(右下角进度条)
步骤3:编写核心代码
文件1:定义数据模型(Todo.java)
// 位置:src/main/java/com/example/tododemo/Todo.java
package com.example.tododemo;
import jakarta.persistence.Entity;
import jakarta.validation.constraints.NotBlank;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@Entity // 告诉Spring这是数据库表
public class Todo {
private Long id;
@NotBlank // 类似Python的assert,非空校验
private String title;
private boolean completed = false;
// 必须要有无参构造函数(JPA要求)
public Todo() {}
// Getter和Setter(IDEA快捷键:Alt+Insert)
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
public boolean isCompleted() { return completed; }
public void setCompleted(boolean completed) { this.completed = completed; }
}
文件2:创建数据库操作接口(TodoRepository.java)
// 位置:src/main/java/com/example/tododemo/TodoRepository.java
package com.example.tododemo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
// 继承JpaRepository<实体类, 主键类型>
@Repository // 标记为仓库组件
public interface TodoRepository extends JpaRepository<Todo, Long> {
// Spring Data JPA会自动实现CRUD方法!
// 比如:findAll(), save(), deleteById()...
}
文件3:编写API接口(TodoController.java)
// 位置:src/main/java/com/example/tododemo/TodoController.java
package com.example.tododemo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController // 组合了@Controller + @ResponseBody
@RequestMapping("/todos") // 所有接口路径前缀
public class TodoController {
@Autowired // 自动注入仓库实例(类似Python的依赖注入)
private TodoRepository todoRepository;
// GET /todos → 获取所有任务
@GetMapping
public List<Todo> getAllTodos() {
return todoRepository.findAll();
}
// POST /todos → 创建新任务
@PostMapping
public Todo createTodo(@RequestBody Todo todo) {
return todoRepository.save(todo);
}
}
步骤4:启动项目
- 找到
TodoDemoApplication.java(带@SpringBootApplication注解的主类) - 右键 →
Run 'TodoDemoApplication.main()' - 看到
Tomcat started on port(s): 8080表示启动成功!
步骤5:测试API
打开浏览器或Postman:
- 查看所有任务:访问
http://localhost:8080/todos→ 返回空数组[] - 添加任务(用curl命令):
curl -X POST http://localhost:8080/todos \ -H "Content-Type: application/json" \ -d '{"title":"学习Spring Boot"}' - 再次访问
/todos,你会看到刚添加的任务!
💡 和Python对比:这相当于用Flask写了:
@app.route('/todos', methods=['GET']) def get_todos(): return jsonify(todos) @app.route('/todos', methods=['POST']) def add_todo(): todos.append(request.json) return jsonify(request.json)只是Spring Boot多了类型安全和自动数据库集成。
5. 新手常见问题解答(10分钟)
Q1:为什么我的项目启动报错“找不到符号”?
- 原因:JDK版本不匹配(比如用了JDK 8)
- 解决:检查
pom.xml中的<java.version>是否为17,并确认IDEA使用的是JDK 17
Q2:H2数据库的数据重启就没了?
- 正常现象!H2是内存数据库,适合开发测试。生产环境会换成MySQL/PostgreSQL,只需改两行配置。
Q3:如何像Python那样热重载代码?
- 安装 Spring Boot DevTools 依赖:
修改代码后按Ctrl+F9(Build Project),浏览器刷新即可生效。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
Q4:看不懂注解(@xxx)怎么办?
- 把注解想象成“标签贴纸”:
@RestController= “这是个Web接口类”@Entity= “这是个数据库表”- 初期不用深究原理,先会用就行!
6. 下一步学习建议
恭喜你完成了第一个Spring Boot项目!接下来可以:
短期目标(1周内)
- 给Todo API增加 删除/更新 功能(参考
@DeleteMapping,@PutMapping) - 尝试连接 真实MySQL数据库(修改
application.properties) - 学习 RESTful API设计规范(比如状态码201表示创建成功)
长期路线图
graph LR
A[Spring Boot基础] --> B[MyBatis/JPA数据库操作]
A --> C[Spring Security权限控制]
B --> D[Redis缓存]
C --> E[消息队列RabbitMQ]
D --> F[微服务Spring Cloud]
🌟 最后鼓励:我当初从Python转Java时,也觉得注解和配置很繁琐。但坚持两周后,发现这种“显式优于隐式”的设计反而让大型项目更可控。编程语言只是工具,解决问题的能力才是核心——你现在迈出的第一步,已经超过了90%的观望者!
附:完整代码仓库
所有示例代码已上传GitHub:github.com/yourname/springboot-todo-demo(替换为你的实际链接)
有任何问题欢迎在评论区留言,我会逐一解答!下次我们讲《用Spring Boot + Vue实现全栈Todo应用》。

评论 0