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

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

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

追风少年发布于 2026/4/5更新于 2026/7/1753 浏览

前言

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. 八、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • STL 转体素工具实战:3D 模型离散化与可视化
  • 零基础学习 Python 指南:从入门到实战的路径规划
  • C 语言与 C++ 的关系详解
  • Flutter eth_sig_util 鸿蒙适配指南:以太坊加密签名与 Web3 开发
  • RocketMQ 5.0 延时消息架构:时间轮算法与分布式调度实践
  • Arduino BLDC 驱动方案:MimiClaw + ESP32 嵌入式机器人实战
  • AI 与存储的结合:智能存储的实践与挑战
  • 机器人 DH 参数模型与正运动学
  • 前端框架选型指南:React、Vue 与 Angular 对比分析
  • Ubuntu 部署 OpenClaw 并接入飞书机器人
  • Android WebRTC SDK 入门指南:从零搭建实时音视频通信应用
  • Java 中间件:RabbitMQ 消费端限流实战(basicQos 配置)
  • Node.js Morgan 日志模块本地时间格式配置
  • 数据结构:用双栈模拟队列的原理与实现
  • Git 分支管理与合并策略实战指南
  • 模拟算法实战:铺地毯、回文日期与扫雷详解
  • 本地部署 LLaMA-Factory 全指南
  • 智能巡线机器人总体方案与硬件设计
  • Nginx 核心功能与配置指南
  • RAG 系统效果评估指南:核心指标与 LangChain4j 实践

相关免费在线工具

  • 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