跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Spring Boot 开发入门:从零搭建第一个 Web 项目

介绍 Spring Boot 开发入门流程。涵盖环境准备(JDK、Maven)、项目创建(Initializr/IDEA)、核心结构解析、Controller 编写与接口测试、配置文件设置及常见问题解决。重点讲解@SpringBootApplication 注解含义、依赖管理及打包运行方法,帮助开发者快速构建首个 Web 应用。

追风少年发布于 2026/4/5更新于 2026/6/440 浏览

前言

Spring Boot 是由 Pivotal 团队推出的基于 Spring 框架的轻量级开发框架,它简化了 Spring 应用的配置流程,通过'约定大于配置'的核心思想,让开发者无需繁琐的 XML 配置就能快速搭建和运行项目。本文将从环境准备、项目创建、核心代码编写到运行测试,手把手教你入门 Spring Boot 开发,全程附带可运行的代码示例。

一、前置准备

1. 环境要求
  • JDK:推荐 JDK 8 及以上(Spring Boot 3.x 需 JDK 17+,本文以 Spring Boot 2.7.x + JDK 8 为例);
  • Maven/Gradle:项目构建工具,本文使用 Maven;
  • 开发工具:IntelliJ IDEA(推荐)或 Eclipse;
  • 浏览器 / Postman:用于接口测试。
2. 验证环境

打开终端 / 命令行,执行以下命令验证环境是否配置成功:

# 验证 JDK
java -version
# 验证 Maven
mvn -v

若输出对应版本信息,说明环境配置完成。

二、创建 Spring Boot 项目

方式 1:通过 Spring Initializr(官方脚手架)创建

这是最推荐的方式,可快速生成标准化项目结构:

  1. 打开 Spring Initializr 官网;
  2. 配置项目基础信息:
    • Project:Maven Project(本文选 Maven);
    • Language:Java;
    • Spring Boot Version:2.7.x(稳定版);
    • Project Metadata:
      • Group:自定义(如 com.example);
      • Artifact:项目名(如 spring-boot-demo);
      • Name:spring-boot-demo;
      • Description:Spring Boot 入门示例;
      • Package Name:com.example.demo;
      • Packaging:Jar(Spring Boot 推荐 Jar 包运行);
      • Java Version:8;
  3. 添加依赖:在「Dependencies」中搜索并添加 Spring Web(Web 开发核心依赖);
  4. 点击「Generate」下载项目压缩包,解压后用 IDEA 打开。
方式 2:IDEA 直接创建(更便捷)
  1. 打开 IDEA → 新建项目 → 选择「Spring Initializr」;
  2. 按上述步骤配置项目信息和依赖,点击「Next」→「Finish」,IDEA 会自动下载依赖并生成项目结构。

三、项目核心结构解析

生成的项目默认结构如下(核心目录):

spring-boot-demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               └── DemoApplication.java // 项目启动类(核心)
│   │   └── resources/
│   │       ├── application.properties // 全局配置文件
│   │       ├── static/ // 静态资源(CSS/JS/图片)
│   │       └── templates/ // 模板文件(Thymeleaf 等)
│   └── test/ // 测试目录
└── pom.xml // Maven 依赖配置文件
  • DemoApplication.java:项目入口,包含 @SpringBootApplication 注解,启动 Spring Boot 应用;
  • application.properties:配置文件,可设置端口、数据库连接等(也可使用.yml 格式);
  • pom.xml:管理项目依赖,Spring Boot 已内置父依赖,无需手动配置版本。

四、核心代码编写

1. 启动类(自动生成,无需修改)

DemoApplication.java 是项目的启动入口,代码如下:

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Spring Boot 启动类
 * @SpringBootApplication 是核心注解,包含:
 * 1. @Configuration:标记为配置类
 * 2. @EnableAutoConfiguration:开启自动配置
 * 3. @ComponentScan:扫描当前包及子包下的组件
 */
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        // 启动 Spring Boot 应用
        SpringApplication.run(DemoApplication.class, args);
    }
}
2. 编写第一个 Controller(接口开发)

在 com.example.demo 包下新建 controller 目录,创建 HelloController.java,用于处理 HTTP 请求:

package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @RestController:组合注解,等价于 @Controller + @ResponseBody
 * 表示该类是控制器,且返回值直接作为 JSON/字符串响应,而非视图
 */
@RestController
@RequestMapping("/hello") // 统一请求路径前缀
public class HelloController {
    // 示例 1:基础 GET 请求,返回字符串
    @GetMapping("/say")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }

    // 示例 2:带路径参数的 GET 请求
    @GetMapping("/user/{name}")
    public String sayHelloToUser(@PathVariable String name) {
        return "Hello, " + name + "! Welcome to Spring Boot World.";
    }

    // 示例 3:返回 JSON 格式数据(Spring Boot 自动序列化)
    @GetMapping("/info")
    public User getUserInfo() {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        user.setAge(25);
        return user;
    }

    // 内部静态类:用户实体
    static class User {
        private Integer id;
        private String name;
        private Integer age;

        // 必须提供 getter 方法,否则 JSON 序列化会缺失字段
        public Integer getId() { return id; }
        public void setId(Integer id) { this.id = id; }
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
        public Integer getAge() { return age; }
        public void setAge(Integer age) { this.age = age; }
    }
}
3. 配置文件自定义(可选)

默认配置文件 application.properties 可修改端口、应用名等:

# 应用名称
spring.application.name=spring-boot-demo
# 服务端口(默认 8080,可自定义)
server.port=8081
# 编码格式
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8

也可改为 application.yml(更简洁的格式):

spring:
  application:
    name: spring-boot-demo
  server:
    port: 8081
  servlet:
    encoding:
      force: true
      charset: UTF-8

五、运行与测试项目

1. 启动项目

有两种启动方式:

  • 方式 1:在 IDEA 中直接运行 DemoApplication.java 的 main 方法;
  • 方式 2:通过 Maven 命令启动(终端进入项目根目录):
# 打包(可选)
mvn clean package
# 启动项目
mvn spring-boot:run

启动成功后,控制台会输出如下日志(关键信息):

Started DemoApplication in 2.531 seconds (JVM running for 3.012)
2. 接口测试

打开浏览器或 Postman,访问以下地址验证接口:

  • 测试基础接口:http://localhost:8081/hello/say 响应:Hello, Spring Boot!
  • 测试带参数接口:http://localhost:8081/hello/user/李四 响应:Hello, 李四!Welcome to Spring Boot World.

测试 JSON 接口:http://localhost:8081/hello/info 响应(JSON 格式):

{
  "id": 1,
  "name": "张三",
  "age": 25
}

六、核心知识点补充

1. @SpringBootApplication 注解

该注解是 Spring Boot 的核心注解,整合了三个关键注解:

  • @Configuration:将类标记为配置类,可定义 Bean;
  • @EnableAutoConfiguration:开启自动配置,Spring Boot 根据依赖自动配置组件(如引入 Spring Web 则自动配置 Tomcat、DispatcherServlet);
  • @ComponentScan:扫描当前包及子包下的 @Controller、@Service、@Repository、@Component 等注解的类。
2. 依赖管理

Spring Boot 通过 spring-boot-starter-parent 父依赖统一管理依赖版本,无需手动指定版本号。常用 starter 依赖:

  • spring-boot-starter-web:Web 开发(包含 Tomcat、Spring MVC);
  • spring-boot-starter-data-jpa:JPA 操作数据库;
  • spring-boot-starter-mybatis:MyBatis 整合;
  • spring-boot-starter-test:单元测试。
3. 打包与运行

通过 mvn clean package 可将项目打包为 Jar 包,直接通过以下命令运行(无需部署到 Tomcat):

java -jar target/spring-boot-demo-0.0.1-SNAPSHOT.jar

七、常见问题及解决

1. 端口被占用

修改 application.properties 中的 server.port(如改为 8082),或关闭占用端口的进程。

2. 依赖下载慢

在 pom.xml 中添加阿里云 Maven 镜像:

<repositories>
  <repository>
    <id>aliyunmaven</id>
    <url>https://maven.aliyun.com/repository/public</url>
  </repository>
</repositories>
<pluginRepositories>
  <pluginRepository>
    <id>aliyunmaven</id>
    <url>https://maven.aliyun.com/repository/public</url>
  </pluginRepository>
</pluginRepositories>
3. 启动时报'找不到主类'

检查 pom.xml 中是否添加了 Spring Boot 插件:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

八、总结

本文从环境准备到项目运行,完整演示了 Spring Boot 第一个 Web 项目的搭建过程,核心要点:

  1. Spring Boot 核心是'约定大于配置',通过 starter 依赖和自动配置简化开发;
  2. @SpringBootApplication 是启动类的核心注解,整合了配置、自动配置、组件扫描;
  3. @RestController 用于开发 RESTful 接口,返回 JSON / 字符串响应;
  4. 项目可直接打包为 Jar 包运行,无需外部容器。

后续可进一步学习 Spring Boot 整合数据库(MyBatis/MySQL)、拦截器、全局异常处理、配置文件多环境切换等内容,逐步掌握 Spring Boot 核心能力。

目录

  1. 前言
  2. 一、前置准备
  3. 1. 环境要求
  4. 2. 验证环境
  5. 验证 JDK
  6. 验证 Maven
  7. 二、创建 Spring Boot 项目
  8. 方式 1:通过 Spring Initializr(官方脚手架)创建
  9. 方式 2:IDEA 直接创建(更便捷)
  10. 三、项目核心结构解析
  11. 四、核心代码编写
  12. 1. 启动类(自动生成,无需修改)
  13. 2. 编写第一个 Controller(接口开发)
  14. 3. 配置文件自定义(可选)
  15. 应用名称
  16. 服务端口(默认 8080,可自定义)
  17. 编码格式
  18. 五、运行与测试项目
  19. 1. 启动项目
  20. 打包(可选)
  21. 启动项目
  22. 2. 接口测试
  23. 六、核心知识点补充
  24. 1. @SpringBootApplication 注解
  25. 2. 依赖管理
  26. 3. 打包与运行
  27. 七、常见问题及解决
  28. 1. 端口被占用
  29. 2. 依赖下载慢
  30. 3. 启动时报“找不到主类”
  31. 八、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 自动化入门:高效处理重复任务
  • 动态规划入门:从泰波那契数到解码方法
  • Ollama 模型管理与删除指南及 Open-WebUI 部署实战
  • 算法实战:位运算求解两数之和、唯一数字及缺失数字
  • MyBatis 初探:持久层框架核心概念与架构
  • OpenClaw AI 编程上下文 Token 限制剖析与扩容实战
  • Python 调用豆包 API 示例代码详解
  • Git 图形化工具推荐
  • C++11 核心特性深度解析:列表初始化与右值引用
  • uv 虚拟环境管理:venv 创建、激活与 Python 版本指定
  • 国内首个教育垂直大模型落地:机遇、挑战与伦理风险
  • 基于 YOLO 与大模型的无人机河道环境检测系统
  • OpenAI Python API 使用指南:基础功能与异步处理
  • 深度学习学习率原理与代码实例
  • KaiwuDB+CodeArts 智能体,让ai快速构建一个智能家居本地化数据处理系统
  • 产品经理如何掌握 AI:实用学习指南
  • LangChain 1.0 架构全景、Runnable 协议与 LCEL 声明式语法解析
  • 可信赖的大型语言模型综述:提出可信大模型七大维度
  • LLaMA-Factory 全流程模型训练指南
  • 解决下载慢问题:国内可用的Stable Diffusion和LLaMA模型镜像站清单

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online