Spring Boot入门:60分钟从零写出你的第一个后端服务

代码里的烟火
2025-12-27 13:28
阅读 2270

大家好,我是你们的老朋友,一个在大厂干了三年后端开发、业余时间在B站分享技术的UP主。今天这篇教程,是专门写给完全零基础的新手朋友的。

为什么我要写这篇文章?因为我记得自己刚入行那会儿,面对Spring Boot一脸懵:什么是“自动配置”?为什么加个注解就能启动服务器?连IDE都不会装……后来我带实习生时,发现很多人卡在同样的地方。所以今天,我想用最直白的语言、最清晰的步骤,带你60分钟内跑通第一个Spring Boot程序。这不是速成神话,而是经过我反复打磨的“最小可行路径”。

更重要的是——安全意识要贯穿始终。哪怕是最简单的Demo,我们也要养成良好的习惯,比如不硬编码密码、不暴露敏感信息。代码人生,从第一行就该有安全意识!


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

简单说:Spring Boot 是一个帮你快速搭建 Java 后端应用的工具箱

想象你要盖房子:

  • 普通Java开发 = 你得自己买水泥、砖头、钢筋,再找工人,再设计图纸……
  • Spring Boot = 直接给你一套精装样板房,水电全通,你只要决定“客厅放沙发还是茶几”就行。

它最大的特点就是 “约定优于配置” —— 很多事情它都帮你默认做好了(比如内置Tomcat服务器、自动连接数据库等),你只需要专注业务逻辑。

💡 我当初学的时候,最震撼的就是:写一个类,加两个注解,运行一下,浏览器就能访问了!这比传统Java Web开发快太多了。


二、环境准备:5分钟搭好开发环境

别怕!我们只装3样东西:

软件 作用 安装建议
JDK 17(或以上) Java运行环境 推荐 Oracle JDKOpenJDK
IntelliJ IDEA Community 免费强大的Java IDE 官网直接下载,社区版完全够用
Maven(可选) 项目依赖管理工具 IDEA已内置,无需单独安装

步骤详解:

  1. 安装JDK

    • 下载JDK 17(别用太老的版本,Spring Boot 3.x要求JDK 17+)
    • 安装后打开终端,输入 java -version,看到类似以下输出即成功:
      openjdk version "17.0.10" 2024-01-16
      
  2. 安装IDEA

  3. 验证环境

    • 打开IDEA → Create New Project → 选择 Spring Initializr
    • 如果能看到项目创建界面,说明环境OK!

⚠️ 安全提示:不要从非官方渠道下载JDK或IDE,避免植入恶意代码!


三、核心概念:用大白话讲清楚

新手最容易被术语吓到。我们拆解三个最关键的:

1. 什么是“启动类”?

就是你程序的入口。Spring Boot规定:@SpringBootApplication 注解的类就是启动类

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

📌 小贴士:这个类的位置很重要!默认它会扫描同包及子包下的所有组件。所以建议把它放在根包下,比如 com.example.demo

2. 什么是“Controller”?

它是处理用户请求的“接待员”。比如用户访问 /hello,Controller就负责返回“Hello World”。

@RestController
public class HelloController {
    
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}
  • @RestController = 告诉Spring:“这个类专门处理网络请求”
  • @GetMapping("/hello") = 当用户用GET方法访问 /hello 时,执行这个方法

3. 什么是“自动配置”?

Spring Boot会根据你引入的依赖,自动帮你配置好相关功能

比如你加了数据库依赖,它就自动尝试连接数据库;你加了Web依赖,它就自动启动内嵌Tomcat服务器。

🔒 安全意识提醒:自动配置虽方便,但不要盲目添加依赖!每个依赖都可能带来安全风险。只加你真正需要的。


四、实战:手把手写一个“用户问候”服务

现在,我们用30分钟完成一个真实小项目:用户访问 /greet?name=张三,返回 “你好,张三!”。

第1步:创建项目

  1. 打开IDEA → New Project → Spring Initializr
  2. 填写:
    • Project SDK: 选你装的JDK 17
    • Language: Java
    • Type: Maven
    • Group: com.example
    • Artifact: demo
  3. Dependencies 中勾选:
    • Spring Web(这是做Web服务必须的!)
  4. 点击Next → Finish

✅ 项目结构应如下:

demo/
├── src/main/java/com/example/demo/
│   └── DemoApplication.java  ← 启动类
└── pom.xml                   ← 依赖配置文件

第2步:写Controller

com.example.demo 包下新建类 GreetController.java

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetController {

    @GetMapping("/greet")
    public String greet(@RequestParam(defaultValue = "陌生人") String name) {
        // 防XSS攻击:简单过滤特殊字符(实际项目需更严格)
        String safeName = name.replaceAll("[<>'\"]", "");
        return "你好," + safeName + "!";
    }
}

🔐 安全重点:这里做了最基础的输入过滤,防止用户传 <script> 等恶意代码。虽然简单,但体现了安全意识!

第3步:运行并测试

  1. 点击 DemoApplication.java 左边的绿色三角 ▶️ 运行
  2. 看到控制台输出 Tomcat started on port(s): 8080 表示启动成功
  3. 打开浏览器,访问:
    • http://localhost:8080/greet → 返回 “你好,陌生人!”
    • http://localhost:8080/greet?name=小明 → 返回 “你好,小明!”

🎉 恭喜!你已经写出了第一个安全的Spring Boot接口!


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

❓ Q1:启动报错 “Port 8080 was already in use”?

原因:8080端口被其他程序占用了(比如另一个Spring Boot项目)。

解决

  • 方法1:关掉占用端口的程序
  • 方法2:改端口。在 src/main/resources/application.properties 中加一行:
    server.port=8081
    

❓ Q2:为什么我的Controller没生效?

检查点

  1. 类是否加了 @RestController
  2. 方法是否加了 @GetMapping / @PostMapping
  3. 启动类是否在Controller的父包?(这是90%新手的问题!)

✅ 正确结构:

com.example.demo              ← 启动类在这里
└── controller                ← Controller在这里(子包)
    └── GreetController.java

❓ Q3:如何查看请求日志?

Spring Boot默认会打印请求日志。运行后你会看到类似:

2024-06-01T10:00:00.000Z  INFO 12345 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'

这就是正常现象,说明请求被处理了。


六、面试题挑战:这些你都会了吗?

学完本教程,你可以自信回答以下初级面试题:

面试题 考察点 简洁回答
Spring Boot 和 Spring 有什么区别? 核心理解 Spring Boot 是 Spring 的脚手架,简化配置,内嵌服务器,开箱即用
@RestController@Controller 有什么不同? 注解区别 @RestController = @Controller + @ResponseBody,直接返回数据而非页面
如何修改Spring Boot默认端口? 配置能力 application.properties 中设置 server.port=新端口
为什么启动类要放在根包? 组件扫描 Spring Boot 默认只扫描启动类所在包及其子包下的组件

💬 我在B站的“面试题挑战”系列里会深入讲解这些题。关注我,下次更新见!


七、下一步学习建议:别踩这些坑!

  1. 先别急着学数据库
    很多人一上来就想连MySQL,结果环境配半天,挫败感拉满。建议先把HTTP请求、参数接收、返回JSON玩熟。

  2. 善用官方文档
    Spring Boot文档写得极好:https://spring.io/projects/spring-boot
    别信那些“3天精通”的野路子教程!

  3. 安全意识要前置

    • 永远不要在代码里写密码(用配置文件 + 环境变量)
    • 用户输入一定要校验和过滤
    • 敏感接口加权限控制(后面学Spring Security)
  4. 动手!动手!动手!
    看十遍不如写一遍。试着把 /greet 改成返回JSON格式:

    { "message": "你好,小明!", "timestamp": "2024-06-01T10:00:00" }
    

    (提示:返回一个Map或自定义对象即可)


写在最后:你的代码人生,从此开始

60分钟很短,但足够让你推开后端世界的大门。我当初就是从这样一个小小的 /hello 开始,一步步走到今天。

记住:每个大神都曾是个菜鸟,区别只在于有没有迈出第一步

如果你跟着教程跑通了代码,不妨在评论区留个言:“我的第一个Spring Boot服务启动成功!” —— 这会是你代码人生中值得纪念的一刻。

下期预告:《Spring Boot + MySQL:安全地存储用户数据》。我会重点讲解如何防止SQL注入,这是每个后端开发者必须掌握的安全技能。

我是你们的技术UP主,我们代码江湖再见!

评论 0

最热最新
暂无评论
代码里的烟火Lv.1
0
影响力
0
文章
0
粉丝