跳到主要内容 Spring Boot 开发入门:从零搭建第一个 Web 项目 | 极客日志
Java java
Spring Boot 开发入门:从零搭建第一个 Web 项目 介绍 Spring Boot 开发入门流程。涵盖环境准备(JDK、Maven)、项目创建(Initializr/IDEA)、核心结构解析、Controller 编写与接口测试、配置文件设置及常见问题解决。重点讲解@SpringBootApplication 注解含义、依赖管理及打包运行方法,帮助开发者快速构建首个 Web 应用。
追风少年 发布于 2026/4/5 更新于 2026/4/13 1 浏览前言
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. 验证环境 打开终端 / 命令行,执行以下命令验证环境是否配置成功:
二、创建 Spring Boot 项目
方式 1:通过 Spring Initializr(官方脚手架)创建
打开 Spring Initializr 官网 ;
配置项目基础信息:
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;
添加依赖:在「Dependencies」中搜索并添加 Spring Web (Web 开发核心依赖);
点击「Generate」下载项目压缩包,解压后用 IDEA 打开。
方式 2:IDEA 直接创建(更便捷)
打开 IDEA → 新建项目 → 选择「Spring Initializr」;
按上述步骤配置项目信息和依赖,点击「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;
@SpringBootApplication
public class DemoApplication {
public static void main (String[] args) {
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
@RequestMapping("/hello")
public class HelloController {
@GetMapping("/say")
public String sayHello () {
return "Hello, Spring Boot!" ;
}
@GetMapping("/user/{name}")
public String sayHelloToUser (@PathVariable String name) {
return "Hello, " + name + "! Welcome to Spring Boot World." ;
}
@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;
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 项目的搭建过程,核心要点:
Spring Boot 核心是'约定大于配置',通过 starter 依赖和自动配置简化开发;
@SpringBootApplication 是启动类的核心注解,整合了配置、自动配置、组件扫描;
@RestController 用于开发 RESTful 接口,返回 JSON / 字符串响应;
项目可直接打包为 Jar 包运行,无需外部容器。
后续可进一步学习 Spring Boot 整合数据库(MyBatis/MySQL)、拦截器、全局异常处理、配置文件多环境切换等内容,逐步掌握 Spring Boot 核心能力。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 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