Spring Boot入门教程:60分钟快速上手
引言:一个真实项目中的“技术救火”

去年,我在公司接手了一个比较紧急的小项目——为市场部搭建一个客户信息收集和展示的后台系统。时间紧迫,前后端都要一起搞,而我们团队后端这边只有我一个人,还要求在三天内拿出可运行的原型给老板看。
当时第一反应就是:用Spring Boot!因为它的核心理念“开箱即用”、自动配置、快速构建,正好能满足这种短平快的需求。而且我也刚好在之前的一个小项目里试过水,效果还不错。
接下来的两个小时,我把一个基于Spring Boot + MyBatis + Vue的原型搭了起来,包括数据库结构、接口设计、基础增删改查功能。后来再花了一天做了一些扩展,整个系统居然跑起来了。
今天我就结合这个真实的开发过程,分享一下如何在60分钟内用Spring Boot完成一个基本可用的后端系统,希望能让刚接触Spring Boot的朋友少走弯路,也能让有经验的同学看看我在实战中是怎么使用的。
项目背景与目标

我们要做的系统其实很简单:一个客户信息管理后台。
- 客户可以注册(录入姓名、电话、城市、意向产品)
- 支持查询所有客户信息
- 支持按城市筛选
- 暴露RESTful接口供前端调用
虽然需求看着不大,但要在一个小时内搞定,就需要借助Spring Boot来加速开发。
遇到的挑战

说实话,在接到任务的时候我心里也有点打鼓:
- 时间太紧,传统SSM框架(Spring + Spring MVC + MyBatis)可能不够快。
- 我不希望重复造轮子,比如写Controller、DAO层模板代码。
- 需要快速调试API,最好能带一个内置的HTTP客户端。
- 要支持热部署,方便修改代码不停机调试。
这四个问题要是解决不好,别说一个小时,半天都不够干。
技术选型与整体架构
考虑到项目周期短、结构简单,我最终决定采用如下技术栈:
- Spring Boot 2.7.x
- JDK 11
- MyBatis Plus(简化CRUD操作)
- MySQL 8.x
- Swagger UI(文档+测试接口)
- Lombok(减少样板代码)
架构方面也非常简单:
Client (Vue) --> Spring Boot API --> MySQL
Spring Boot本身自带嵌入式Tomcat,所以部署非常方便,本地直接启动即可,不需要额外配置服务器。
快速搭建步骤详解(关键代码示例)
第一步:使用Spring Initializr创建基础项目
访问 https://start.spring.io,选择以下依赖项:
- Spring Web
- Spring Data JPA(这里我用了MyBatis Plus,但JPA是基础组件之一)
- MyBatis Framework
- MySQL Driver
- Lombok
- Swagger2(用于接口文档)
点击Generate下载项目,解压后导入IDE(推荐使用IntelliJ IDEA或者VS Code加Java插件)。
第二步:配置application.yml文件
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/customer_db?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
configuration:
mapUnderscoreToCamelCase: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL语句
swagger:
enabled: true
第三步:建立数据库表结构
我只建了一张表,用来存客户信息:
CREATE TABLE `customer` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) DEFAULT NULL,
`phone` VARCHAR(20) DEFAULT NULL,
`city` VARCHAR(50) DEFAULT NULL,
`product_interest` VARCHAR(100) DEFAULT NULL,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
第四步:编写实体类 & Mapper
使用Lombok和MyBatis Plus大大简化了代码量:
Customer.java
import lombok.Data;
@Data
public class Customer {
private Long id;
private String name;
private String phone;
private String city;
private String productInterest;
private Date createTime;
}
CustomerMapper.java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface CustomerMapper extends BaseMapper<Customer> {
}
第五步:编写Service层逻辑
import org.springframework.stereotype.Service;
@Service
public class CustomerService {
@Autowired
private CustomerMapper customerMapper;
public List<Customer> getAllCustomers() {
return customerMapper.selectList(null);
}
public List<Customer> getCustomersByCity(String city) {
return customerMapper.selectList(new QueryWrapper<Customer>().eq("city", city));
}
public void addCustomer(Customer customer) {
customerMapper.insert(customer);
}
}
第六步:编写Controller层接口
@RestController
@RequestMapping("/api/customers")
@CrossOrigin // 允许跨域请求,适用于Vue等前端项目
public class CustomerController {
@Autowired
private CustomerService customerService;
@GetMapping
public ResponseEntity<List<Customer>> getAllCustomers() {
return ResponseEntity.ok(customerService.getAllCustomers());
}
@GetMapping("/{city}")
public ResponseEntity<List<Customer>> getCustomersByCity(@PathVariable String city) {
return ResponseEntity.ok(customerService.getCustomersByCity(city));
}
@PostMapping
public ResponseEntity<Void> createCustomer(@RequestBody Customer customer) {
customerService.addCustomer(customer);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
}
第七步:集成Swagger文档
添加配置类启用Swagger:
@Configuration
@EnableOpenApi
public class SwaggerConfig {}
然后就可以通过访问 /swagger-ui.html 看到自动生成的接口文档,并且可以直接发送请求进行测试!
踩坑记录 & 经验总结
虽然是个小项目,但在实际开发过程中还是踩了不少坑:
坑1:MyBatis Plus字段映射问题
起初我把Java实体类里的字段命名为productInterest,但是数据库是product_interest。默认情况下MyBatis不会自动做驼峰转下划线。解决办法是在application.yml中加入:
mapUnderscoreToCamelCase: true
当然也可以手动加上注解@TableId(value = "product_interest"),不过对于大多数字段来说还是统一处理更省事。
坑2:Swagger无法访问
刚开始生成文档时一直报错404,后来发现是路径不对。如果你用的是Spring Boot 2.6及以上,Swagger访问地址会变成/swagger-ui/index.html而不是之前的/swagger-ui.html。注意区分版本差异。
坑3:POST请求JSON解析异常
这是最常见的坑了。有时候传递的JSON字段名跟实体类的setter名称对不上,会导致反序列化失败。检查字段命名是否规范,使用Lombok的@Data注解能避免很多类似问题。
效果与收益
按照上面的流程,我大概花了45分钟就完成了整个项目的搭建,剩下的时间做一些优化和补充测试数据,整个系统就能正常运行了。
- 接口文档清晰(Swagger UI)
- 可以直接对接前端页面
- 数据库结构简洁合理
- 部署非常方便,只需要打个jar包丢到服务器上就行
老板看了之后非常满意,市场部同事也觉得挺实用,后续还拓展了权限管理和Excel导出功能,全靠这个快速启动的基础。
实战建议 & 注意事项
作为一名经历过多个Spring Boot项目的开发者,我想给新手几个建议:
1. 学会用starter,别自己造轮子
Spring Boot的核心优势就是starter机制。比如你想连接Redis,引入spring-boot-starter-data-redis就可以了,不要再去自己封装连接池、配置参数之类的。
2. 合理使用自动配置,避免过度魔性
虽然Spring Boot做了大量自动装配,但我们也要懂背后的原理。遇到问题能看懂日志、知道从哪里入手调试才是关键。
3. 使用Actuator监控健康状态
生产环境一定记得加上Actuator模块,暴露健康检查、线程池、内存使用情况等重要指标。
management:
endpoints:
web:
exposure:
include: "*"
4. 多用Devtools加快调试
引入spring-boot-devtools后,只要保存代码就会自动重启服务(如果改动的是非配置类),极大提升开发效率。
5. 接口设计要规范
即使是内部系统,接口设计也要遵循RESTful原则,命名清晰、结构统一、返回格式标准化(如统一使用Result
写在最后:Spring Boot不是银弹,但它是快枪手
这篇文章讲的是我亲身经历的一个小项目,Spring Boot的确帮助我节省了很多时间,也让我更专注在业务逻辑上。但它也不是万能的,比如面对高并发、复杂业务场景时,仍然需要搭配消息队列、缓存、分布式事务等更多高级组件。
但作为初学者入门Java后端开发,或者需要快速实现一个原型系统时,Spring Boot绝对是首选工具。希望这篇来自一线开发者的经验分享,能帮你迈出第一步。
Happy coding~ 🚀

评论 0