Spring Boot入门教程:60分钟快速上手

UI还原大师
2025-12-15 01:13
阅读 421

大家好,我是一名工作5年的后端开发工程师。经常有朋友问我:“想学 Java 后端,Spring Boot 该怎么入门?”说实话,我当初学的时候也踩过不少坑——文档太官方、概念太抽象、环境配到崩溃……所以今天,我想用最接地气的方式,带你 60分钟内跑通第一个 Spring Boot 项目,顺便聊聊那些面试题、避坑经验和学习路径。

📌 本文适合谁?

  • 完全零基础,连 Java 都不太熟的新手
  • 想快速体验 Spring Boot 的前端开发者(比如熟悉 JavaScript 的同学)
  • 准备面试,需要快速上手的求职者

一、Spring Boot 是什么?能干啥?

简单说:Spring Boot 是一个帮你快速搭建 Java 后端服务的“脚手架”

  • 不用写一堆 XML 配置
  • 内嵌了 Tomcat(Web 服务器),直接 java -jar 就能启动
  • 自动整合数据库、缓存、安全等常用功能

💡 类比理解
如果你用过 JavaScript 的 Express 或 Node.js,Spring Boot 就像是 Java 版的 “Express + 内置服务器 + 自动配置全家桶”。


二、环境准备(10分钟搞定)

1. 安装 JDK(Java 开发工具包)

Spring Boot 2.7+ 推荐使用 JDK 17(目前最稳定的长期支持版本)。

验证安装

java -version
# 应该输出类似:openjdk version "17.0.xx"

⚠️ 踩坑提醒
很多新手卡在 JAVA_HOME 环境变量没配!
Windows 用户:去“系统属性 → 高级 → 环境变量”,新建 JAVA_HOME 指向 JDK 安装目录(如 C:\Program Files\Java\jdk-17)。


2. 安装 IDE(推荐 IntelliJ IDEA Community)


3. 创建项目(两种方式)

方式一:用 Spring Initializr(推荐)

访问 https://start.spring.io,填写:

配置项
Project Maven
Language Java
Spring Boot 3.2.x(最新稳定版)
Group com.example
Artifact demo
Dependencies Spring Web(必选)

点击 “Generate”,下载 zip 包,解压后用 IDEA 打开。

方式二:IDEA 直接创建

File → New → Project → Spring Initializr,后续步骤同上。

关键点:Dependencies 里只勾 Spring Web 即可!别贪多,新手加太多依赖反而容易报错。


三、核心概念(用大白话解释)

1. Controller:你的“接口接待员”

所有 HTTP 请求(比如浏览器访问 /hello)都由 Controller 处理。

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}
  • @RestController = 这个类专门处理 Web 请求
  • @GetMapping("/hello") = 当用户访问 /hello 时,执行这个方法

💬 我当初学的时候:总把 @GetMapping 写成 @Get,结果 404 找半天……记住全名!


2. Application 入口:程序从哪开始?

自动生成的 DemoApplication.java 就是入口:

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
  • @SpringBootApplication = 开启自动配置 + 组件扫描
  • 运行这个 main 方法,服务就启动了!

3. application.properties:配置文件

位置:src/main/resources/application.properties

常用配置:

# 改端口(默认8080)
server.port=9090

# 设置上下文路径(可选)
server.servlet.context-path=/api

🔧 效果:现在访问 http://localhost:9090/api/hello


四、实战:写一个“图书查询”接口(20分钟)

目标:实现一个 GET 接口 /books,返回 JSON 格式的书单。

步骤 1:创建 Book 类(数据模型)

public class Book {
    private String title;
    private String author;

    // 构造函数(IDEA 可右键 Generate → Constructor)
    public Book(String title, String author) {
        this.title = title;
        this.author = author;
    }

    // Getter(必须!否则 JSON 序列化失败)
    public String getTitle() { return title; }
    public String getAuthor() { return author; }
}

新手大坑
忘记写 getter 方法!Spring Boot 用 Jackson 转 JSON,没 getter 就返回 {}


步骤 2:改造 Controller

@RestController
public class BookController {

    @GetMapping("/books")
    public List<Book> getAllBooks() {
        return Arrays.asList(
            new Book("《Spring实战》", "Craig Walls"),
            new Book("《Effective Java》", "Joshua Bloch")
        );
    }
}

步骤 3:运行 & 测试

  1. 右键 DemoApplication.java → Run
  2. 控制台看到 Tomcat started on port(s): 8080 表示成功
  3. 浏览器访问 http://localhost:8080/books

✅ 你应该看到:

[
  {"title":"《Spring实战》","author":"Craig Walls"},
  {"title":"《Effective Java》","author":"Joshua Bloch"}
]

🎉 恭喜!你已经写出第一个 REST API 了!


五、新手常见问题 & 解决方案

问题现象 可能原因 解决方法
启动报错 NoClassDefFoundError JDK 版本不匹配 确认 IDEA 的 Project SDK 是 JDK 17
访问接口返回 404 Controller 没被扫描到 确保 Controller 在 DemoApplication 同包或子包下
返回 JSON 是空对象 {} 缺少 getter 方法 给 Book 类加上 getter
端口被占用 其他程序占用了 8080 application.properties 中的 server.port
中文乱码 默认编码非 UTF-8 application.propertiesserver.servlet.encoding.charset=UTF-8

💡 经验之谈
我第一次部署项目到服务器,就是因为没改端口,和 Nginx 冲突了,排查了整整一天……


六、为什么前端开发者也该懂点 Spring Boot?

如果你会 JavaScript,你会发现:

JavaScript (Express) Java (Spring Boot)
app.get('/hello', ...) @GetMapping("/hello")
res.json(data) 直接 return 对象(自动转 JSON)
npm start 运行 main 方法

📚 延伸建议
前端同学可以尝试用 Spring Boot 写个 Mock API,替代 Mock.js,更贴近真实后端逻辑。


七、下一步学习建议

1. 必读书籍(按顺序)

书名 适合阶段 说明
《Spring Boot实战》 入门 代码多,概念少,照着敲就行
《Spring揭秘》 进阶 深入原理,面试加分
《Effective Java》 长期 Java 编程圣经,提升代码质量

📖 我的建议:先别啃《Spring源码深度解析》,容易劝退!


2. 高频面试题准备

  • Spring Boot 自动配置原理?
  • @RestController@Controller 有什么区别?
  • 如何统一处理异常?
  • 如何连接 MySQL?

技巧:每学一个新功能(比如连数据库),立刻搜“Spring Boot 面试题”,带着问题学效率更高。


3. 动手项目推荐(循序渐进)

  1. Todo List API(增删改查)
  2. 用户登录接口(集成 Spring Security)
  3. 博客系统(连 MySQL + MyBatis)

🔁 学习心法
看十遍不如写一遍。哪怕只是改个端口、加个字段,也要亲手敲代码!


结语

60分钟,你已经走完了我当年一周的路。技术没有捷径,但可以少走弯路。希望这篇“踩坑指南”能帮你避开我曾经掉进去的坑。

记住

所有的“高深莫测”,拆开看都是“Hello World”的组合。

下次当你看到复杂的微服务架构时,别慌——它可能也只是从一个 @GetMapping("/hello") 开始的。

祝你 coding 顺利,面试一把过!🚀


作者:一名不想让你重复踩坑的后端工程师
字数统计:约 3040 字(含代码与表格)

评论 0

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