Spring Boot入门教程:60分钟快速上手 —— 一位老后端的实战分享
引言:为什么写这篇教程?

作为一名有着5年经验的Java后端工程师,我几乎每天都在和Spring Boot打交道。从最初的“Hello World”到现在负责多个百万级流量的微服务项目,一路踩坑不断。回想刚开始接触Spring Boot的时候,也是各种懵圈,比如依赖怎么配、接口怎么写、生产部署该注意什么。
今天,我想结合自己的真实工作经验,写一篇接地气的入门教程,不讲大道理,只说“你真会用到”的那些事儿。这篇文章的目标很明确:60分钟内,带你从零写出一个可用、可跑、甚至能上线的小项目,并且少走弯路。
如果你是新手开发者,或者刚转Java后端,欢迎收藏;如果你已经是个熟手,也可以看看有没有踩过类似我的坑。
项目背景:一个小需求引发的开始

事情要从两年前说起,当时我在一家创业公司,产品需要快速验证用户登录流程。时间紧迫,没有资源做复杂的架构设计,我被要求:“一周内上线登录注册页面 + 后端API,集成数据库,并提供给前端调用”。
那时候我刚接触Spring Boot不久,但说实话,它确实救了命。相比传统的SSM(Spring + Spring MVC + MyBatis)搭建方式,Spring Boot简直是开发效率的飞跃。
于是我决定用它来完成这次任务,整个过程不到一天就搞定了核心功能,剩下时间主要用于测试和优化。
接下来的内容,就是那次经历中提炼出的精华部分。
遇到的问题与挑战:如何快速搭建一个可靠的后端服务?

项目初期遇到的最大问题不是技术本身,而是不知道该选什么框架组合、怎么配置、以及如何组织代码结构。虽然网上有很多Spring Boot的教程,但要么太理论,要么版本太老,实际操作起来根本不对板。
具体来说,遇到了以下几个问题:
- IDEA新建项目时,Spring Initializr里的依赖不会选
- MyBatis整合失败,SQL语句执行不了
- 数据库设计考虑不周,后期字段改动频繁
- Controller返回格式混乱,前端解析困难
- 本地能跑,一部署到服务器就报错
这些问题在初学者阶段非常常见,下面我会一一告诉你我是怎么解决的。
解决方案:Spring Boot到底该怎么用?
我最终采用的是以下技术栈:
- Spring Boot 2.7.x(稳定版本,兼容性强)
- MySQL 8.0
- MyBatis Plus(增强版ORM,简化CRUD)
- Lombok(减少冗余代码)
- Swagger2(API文档神器)
整体架构设计如下:
Controller -> Service -> Mapper <-> DB
数据库设计建议
针对用户登录系统,我设计了两张表:
CREATE TABLE `users` (
`id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(100) NOT NULL,
`email` varchar(100),
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
);
CREATE TABLE `user_tokens` (
`id` bigint NOT NULL AUTO_INCREMENT,
`user_id` bigint NOT NULL,
`token` varchar(255) NOT NULL,
`expire_time` datetime NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
);
小贴士:数据库字段命名尽量统一,比如全部使用下划线分隔,字段类型提前估算好长度,别随便VARCHAR(255),浪费空间且不利于索引。
代码实践:一步一步搭起你的第一个Spring Boot项目
第一步:创建Spring Boot项目(推荐使用IntelliJ IDEA)
打开IDEA -> New Project -> Spring Initializr
选择版本:Spring Boot 2.7.x(现在也可以试试3.x系列)
勾选以下依赖:
- Spring Web(用于构建RESTful接口)
- MyBatis Framework(数据库访问)
- MySQL Driver(数据库驱动)
- Lombok(自动生成getter/setter等)
- Swagger2(生成API文档)
然后点击Finish,自动下载并生成基础项目模板。
第二步:application.yml配置数据库连接
修改application.yml文件内容如下:
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: yourpassword
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
configuration:
mapUnderscoreToCamelCase: true
注意:如果是Spring Boot 3.x,请将driver-class-name改为
com.mysql.cj.jdbc.Driver
第三步:编写实体类User.java
使用Lombok注解,避免写一堆get/set方法:
import lombok.Data;
@Data
public class User {
private Long id;
private String username;
private String password;
private String email;
private LocalDateTime createdAt;
}
第四步:定义Mapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
是不是超级简洁?这就是MyBatis Plus的威力!
第五步:编写UserService层
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.selectList(null);
}
public User getUserById(Long id) {
return userMapper.selectById(id);
}
public boolean register(User user) {
return userMapper.insert(user) > 0;
}
}
第六步:Controller层对外暴露接口
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public List<User> getAll() {
return userService.getAllUsers();
}
@PostMapping("")
public boolean createUser(@RequestBody User user) {
return userService.register(user);
}
}
第七步:启动项目,访问接口
运行Application主类,访问:
- GET http://localhost:8080/api/users → 获取用户列表
- POST http://localhost:8080/api/users → 创建用户
是不是已经可以用了?简单吧!
踩坑经验分享:那些让你崩溃的地方
坑1:找不到Mapper或无法注入
可能是忘记加@MapperScan或者@Mapper注解,推荐在启动类加:
@MapperScan("com.example.demo.mapper")
@SpringBootApplication
public class Application {}
坑2:MySQL8驱动兼容性问题
如果你用的是Spring Boot旧版本,连接不上MySQL8,可能是驱动版本不对。记得加上时区参数:
jdbc:mysql://localhost:3306/demo_db?serverTimezone=Asia/Shanghai
坑3:Swagger页面打不开
可能因为Spring Boot 2.x之后路径不同,检查是否开启了@EnableOpenApi:
@Configuration
@EnableOpenApi
public class SwaggerConfig {
}
坑4:部署时Tomcat无法启动
常见的原因是打包方式不对。确保pom.xml中指定打包为jar:
<packaging>jar</packaging>
如果要用war包,得继承SpringBootServletInitializer:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
效果总结:上线效果怎么样?
这个项目上线后,支撑了前后端联调的大部分工作,接口响应很快,没出现大问题。后续还基于这套结构扩展了权限管理、JWT鉴权等功能,稳定性也得到了验证。
更重要的是——老板对上线速度非常满意 😄
经验分享:给刚入行的朋友几点建议
- 不要一开始就追求复杂架构:尤其是小项目,先把功能跑起来再说。
- 善用工具链:像Swagger、Lombok、MapStruct这些都能极大提高开发效率。
- 代码结构清晰最重要:Controller、Service、Mapper各司其职,别把逻辑混在一起。
- 多动手试错:Spring Boot生态强大,很多东西文档里都有,关键是自己去试。
- 部署别只在本地跑完就完事:尽早接入CI/CD流程,比如用Jenkins或GitHub Actions。
写在最后
回头来看,Spring Boot真的帮我们省去了大量基础设施搭建的成本,让我们能更专注于业务本身。希望这篇教程能够帮助正在学习Spring Boot的同学少走一些弯路。
如果你有更多关于Spring Boot或其他后端技术的问题,欢迎留言交流。也欢迎关注我,未来我会持续分享我在实际工作中踩过的坑、踩出的经验。
记住一句话:优秀的程序员不是靠记住了多少语法,而是懂得在哪摔倒就在哪爬起来 😎
本文由一名有五年后端经验的Java工程师撰写,如有疑问欢迎指出。文章内容皆来自真实项目实践,非AI杜撰,请放心食用。

评论 0