Spring Boot入门教程:60分钟快速上手 —— 一位老后端的实战分享

开源路边摊
2025-06-27 01:13
阅读 251

引言:为什么写这篇教程?

引言:为什么写这篇教程?

作为一名有着5年经验的Java后端工程师,我几乎每天都在和Spring Boot打交道。从最初的“Hello World”到现在负责多个百万级流量的微服务项目,一路踩坑不断。回想刚开始接触Spring Boot的时候,也是各种懵圈,比如依赖怎么配、接口怎么写、生产部署该注意什么。

今天,我想结合自己的真实工作经验,写一篇接地气的入门教程,不讲大道理,只说“你真会用到”的那些事儿。这篇文章的目标很明确:60分钟内,带你从零写出一个可用、可跑、甚至能上线的小项目,并且少走弯路。

如果你是新手开发者,或者刚转Java后端,欢迎收藏;如果你已经是个熟手,也可以看看有没有踩过类似我的坑。


项目背景:一个小需求引发的开始

项目背景:一个小需求引发的开始

事情要从两年前说起,当时我在一家创业公司,产品需要快速验证用户登录流程。时间紧迫,没有资源做复杂的架构设计,我被要求:“一周内上线登录注册页面 + 后端API,集成数据库,并提供给前端调用”。

那时候我刚接触Spring Boot不久,但说实话,它确实救了命。相比传统的SSM(Spring + Spring MVC + MyBatis)搭建方式,Spring Boot简直是开发效率的飞跃。

于是我决定用它来完成这次任务,整个过程不到一天就搞定了核心功能,剩下时间主要用于测试和优化。

接下来的内容,就是那次经历中提炼出的精华部分。


遇到的问题与挑战:如何快速搭建一个可靠的后端服务?

遇到的问题与挑战:如何快速搭建一个可靠的后端服务?

项目初期遇到的最大问题不是技术本身,而是不知道该选什么框架组合、怎么配置、以及如何组织代码结构。虽然网上有很多Spring Boot的教程,但要么太理论,要么版本太老,实际操作起来根本不对板。

具体来说,遇到了以下几个问题:

  1. IDEA新建项目时,Spring Initializr里的依赖不会选
  2. MyBatis整合失败,SQL语句执行不了
  3. 数据库设计考虑不周,后期字段改动频繁
  4. Controller返回格式混乱,前端解析困难
  5. 本地能跑,一部署到服务器就报错

这些问题在初学者阶段非常常见,下面我会一一告诉你我是怎么解决的。


解决方案: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主类,访问:

是不是已经可以用了?简单吧!


踩坑经验分享:那些让你崩溃的地方

坑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鉴权等功能,稳定性也得到了验证。

更重要的是——老板对上线速度非常满意 😄


经验分享:给刚入行的朋友几点建议

  1. 不要一开始就追求复杂架构:尤其是小项目,先把功能跑起来再说。
  2. 善用工具链:像Swagger、Lombok、MapStruct这些都能极大提高开发效率。
  3. 代码结构清晰最重要:Controller、Service、Mapper各司其职,别把逻辑混在一起。
  4. 多动手试错:Spring Boot生态强大,很多东西文档里都有,关键是自己去试。
  5. 部署别只在本地跑完就完事:尽早接入CI/CD流程,比如用Jenkins或GitHub Actions。

写在最后

回头来看,Spring Boot真的帮我们省去了大量基础设施搭建的成本,让我们能更专注于业务本身。希望这篇教程能够帮助正在学习Spring Boot的同学少走一些弯路。

如果你有更多关于Spring Boot或其他后端技术的问题,欢迎留言交流。也欢迎关注我,未来我会持续分享我在实际工作中踩过的坑、踩出的经验。

记住一句话:优秀的程序员不是靠记住了多少语法,而是懂得在哪摔倒就在哪爬起来 😎


本文由一名有五年后端经验的Java工程师撰写,如有疑问欢迎指出。文章内容皆来自真实项目实践,非AI杜撰,请放心食用。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝