Spring Boot 入门教程:60 分钟快速上手
背景介绍

记得第一次接触 Spring Boot 的时候,我还在一家中小型互联网公司做后端开发。当时我们团队接到一个紧急的内部系统重构任务,目标是将原本使用 Spring MVC + XML 配置的老项目迁移到更现代化的技术栈。领导要求在两周内完成上线,而我作为技术主力之一,必须快速掌握新技术来支撑这个时间表。
Spring Boot 看上去很强大,但刚开始那几天真是让我有点抓耳挠腮。配置项多得让人头大,文档也看不完,官方Demo跑起来没问题,但真到业务场景就一堆问题接踵而至。
后来我想,其实很多人在学习 Spring Boot 的初期都会遇到类似的问题——看似简单,实则复杂;入门门槛不高,但深入之后容易掉坑。所以今天我就结合自己的实战经验,用 60 分钟的时间带你快速上手 Spring Boot,并且通过一个小项目帮你真正理解它是如何落地的。
项目背景

我们这次要做的项目是一个“员工管理系统”,主要功能包括:
- 查询所有员工信息
- 新增员工信息
- 删除指定员工
- 按关键字搜索员工(姓名、职位)
数据库使用 MySQL,前端不做了,只提供 RESTful 接口供测试。
之所以选择这样一个小项目,是因为它涵盖了常见的 CRUD 操作,同时也能带出 Spring Boot 中最常用的核心组件:
- Spring Web:处理 HTTP 请求
- Spring Data JPA:ORM 框架
- Spring Boot Starter:自动装配
- 配置文件 application.yml
- 数据库连接池 HikariCP
- 单元测试
下面我们就一步步从零开始搭建这个项目。
第一步:创建项目结构(5 分钟)

现在你已经决定用 Spring Boot 开发了,第一步肯定是创建项目骨架。这里推荐使用 https://start.spring.io 来生成基础项目。
我们需要的依赖有:
- Spring Web(用于构建 Web 应用)
- Spring Data JPA(用于操作数据库)
- MySQL Driver(连接数据库)
- Lombok(简化 POJO 类代码,可选)
点击 Generate 后会下载一个 zip 包,解压后导入 IDEA 或 VSCode 就行了。
💡提示:如果你平时习惯手动管理依赖,也可以新建 Maven 项目,然后手动添加这些 starter 依赖。
第二步:数据库设计(10 分钟)

接下来我们建一个简单的员工表 employee,字段如下:
CREATE TABLE `employee` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL,
`gender` VARCHAR(10),
`position` VARCHAR(100),
`department` VARCHAR(100)
);
这个表非常简单,没有外键约束,适合初学者练习。实际生产环境建议根据业务需求加索引、分区、审计字段等。
接着我们在 application.yml 中配置数据库连接信息:
spring:
datasource:
url: jdbc:mysql://localhost:3306/company?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
show-sql: true
hibernate:
use-new-id-generator-mappings: false
注意几点:
- 使用
yml格式而不是properties,结构更清晰 - MySQL JDBC 驱动默认不会主动更新 schema,生产环境建议集成 Flyway 或 Liquibase 做版本控制
- 显示 SQL 日志便于调试,但上线前应关闭
第三步:编写实体类和 Repository(10 分钟)
有了数据库结构后,下一步就是定义对应的 Java 实体类 Employee.java:
@Entity
@Data
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String gender;
private String position;
private String department;
}
这里用了 Lombok 注解 @Data 自动帮我们生成 getter/setter/toString 等方法,省去了大量样板代码。
接下来写数据访问层接口 EmployeeRepository.java:
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
List<Employee> findByNameContaining(String keyword);
}
Spring Data JPA 提供了许多开箱即用的方法,像上面这种按照命名规范自动生成查询语句的方式,非常适合做快速原型开发。
第四步:编写服务层和 Controller(15 分钟)
接下来是业务逻辑和服务层。新建 EmployeeService.java:
@Service
@RequiredArgsConstructor
public class EmployeeService {
private final EmployeeRepository repository;
public List<Employee> getAll() {
return repository.findAll();
}
public Optional<Employee> getById(Long id) {
return repository.findById(id);
}
public Employee save(Employee employee) {
return repository.save(employee);
}
public void deleteById(Long id) {
repository.deleteById(id);
}
public List<Employee> search(String keyword) {
return repository.findByNameContaining(keyword);
}
}
然后是 Controller 层,负责接收 HTTP 请求:
@RestController
@RequestMapping("/api/employees")
@RequiredArgsConstructor
public class EmployeeController {
private final EmployeeService service;
@GetMapping
public ResponseEntity<List<Employee>> getAllEmployees() {
return ResponseEntity.ok(service.getAll());
}
@GetMapping("/{id}")
public ResponseEntity<Optional<Employee>> getEmployeeById(@PathVariable Long id) {
return ResponseEntity.ok(service.getById(id));
}
@PostMapping
public ResponseEntity<Employee> createEmployee(@RequestBody Employee employee) {
return ResponseEntity.status(HttpStatus.CREATED).body(service.save(employee));
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteEmployee(@PathVariable Long id) {
service.deleteById(id);
return ResponseEntity.noContent().build();
}
@GetMapping("/search")
public ResponseEntity<List<Employee>> searchEmployees(@RequestParam String keyword) {
return ResponseEntity.ok(service.search(keyword));
}
}
🧠 Tips:Controller 和 Service 的分离很重要。虽然一开始可能觉得麻烦,但这为后续的功能扩展和单元测试带来了极大的便利。
第五步:测试与验证(10 分钟)
Spring Boot 提供了一个非常好用的工具叫 test starter,我们可以用来写单元测试和集成测试。
例如写一个对新增员工的测试:
@SpringBootTest
class EmployeeServiceTest {
@Autowired
EmployeeService service;
@Test
void testCreateAndGet() {
Employee emp = new Employee();
emp.setName("张三");
emp.setGender("男");
emp.setPosition("Java开发");
emp.setDepartment("研发部");
Employee saved = service.save(emp);
assertNotNull(saved.getId());
Optional<Employee> result = service.getById(saved.getId());
assertTrue(result.isPresent());
assertEquals("张三", result.get().getName());
}
}
运行测试的时候,你会发现 Spring Boot 自动加载了整个上下文并连接数据库,执行完后还会清理数据(如果使用内存数据库的话)。
除了用 JUnit 测试,你可以用 Postman 或 curl 来调用接口验证是否符合预期。
第六步:部署与运维准备(10 分钟)
项目跑通只是第一步,真正上线之前还有很多事情要做:
打包部署
使用 Maven 构建命令打包:
mvn clean package
生成的 jar 文件直接放到服务器上就可以用:
java -jar your-app.jar
如果想加一些 JVM 参数,比如内存、日志路径,可以这样启动:
nohup java -Xms256m -Xmx512m -Dlogging.file.path=/var/logs/myapp -jar your-app.jar > /dev/null 2>&1 &
日志监控
Spring Boot 默认使用 Logback 做日志框架,可以在 application.yml 里配置日志路径、级别等。
推荐配合 ELK(ElasticSearch + Logstash + Kibana)做集中日志管理,或者用阿里云 SLS、腾讯云CLS这样的托管方案。
性能优化建议
- 数据库查询尽量走索引,特别是模糊匹配时要注意避免全表扫描
- 使用连接池(HikariCP 是默认的,性能很好)
- 缓存高频查询结果(如 Redis)
- 不要让业务逻辑都堆在 Controller 层,职责分离才是长期维护之道
效果总结
从零搭建这样一个基本可用的后台系统,总共耗时大约一个小时,包括数据库初始化、接口开发、测试验证和部署准备。整个过程下来,我们完成了以下几个核心技能的实践:
- 快速搭建 Spring Boot 工程结构
- 使用 Spring Data JPA 进行数据持久化
- 构建基于 REST 的接口服务
- 编写自动化测试脚本
- 配置数据库连接和基本日志输出
- 掌握本地打包和部署方式
更重要的是,我们体会到了 Spring Boot 在企业级应用中的优势:约定优于配置,开箱即用,高度模块化。
我的一点体会
作为一名在一线打拼多年的开发者,我的切身体会是:Spring Boot 并不是银弹,它只是一个强大的工具。真正决定项目成败的,还是我们自己对业务的理解、对架构的把握,以及对细节的打磨。
我曾经在一次项目交付中因为忽略了一个全局异常处理器导致生产环境频繁报错却不知道哪里出了问题。还有一次因为日志级别没关,服务器磁盘瞬间爆炸……
这些问题后来都被慢慢解决,但也提醒我一件事:框架可以帮你节省时间,但它无法代替你的思考和经验积累。
给新手的几个建议
- 别一开始就想着“精通”Spring Boot,先搞清楚它的设计思想比学语法更重要。
- 学会看源码,当你知道某一个 starter 是怎么工作的,你就不会再怕踩坑了。
- 不要跳过测试环节,哪怕只是简单地跑一遍 GET/POST 请求,也会让你少很多 debug 的烦恼。
- 养成良好的工程习惯,比如合理的包结构、统一的返回格式、清晰的日志记录。
- 尽早了解 DevOps 相关知识,Spring Boot 很适合微服务、容器部署,早接触早受益。
最后说一句
Spring Boot 虽好,但别忘了它的本质还是 Java 生态的一部分。真正的高手,永远是懂得取舍、善用工具的人。希望你能在这短短的一个小时里建立起信心,也埋下继续深入的种子。
如果你刚入门,不妨动手试试这篇文章里的小项目。遇到问题欢迎留言交流,我们一起成长。
共勉之。💪

评论 0