Maven搭建SpringBoot-Web项目:从依赖配置到接口实战,全程无坑指南
用Maven搭建SpringBoot-Web项目的核心就是依赖配置+启动类+控制器开发是版本管理核心,是Web项目的基石;是启动类的核心注解,负责扫描组件和开启自动配置;用于编写RESTful接口,返回JSON/字符串响应。spring-boot-starter-web包含哪些核心组件?(嵌入式Tomcat、SpringMVC、Jackson)SpringBoot项目的启动流程是什么?(启动类ma
作为一名后端开发者,我还记得第一次搭SpringBoot-Web项目时的场景:对着网上的教程复制Maven依赖,结果要么版本冲突导致项目启动失败,要么静态资源访问报404,折腾了大半天才勉强跑起来。
后来做的项目多了才发现,搭建SpringBoot-Web项目根本不用这么费劲——只要搞懂Maven的依赖管理逻辑,掌握核心配置要点,30分钟就能从零搭建一个可直接上线的Web项目。
今天就结合我多年的实战经验,从环境准备、Maven项目创建、核心依赖配置、接口开发、静态资源处理到打包部署,把SpringBoot-Web项目的搭建流程讲透,还会附上新手最容易踩的坑和解决方案,让你少走弯路。
一、 环境准备:先把基础工具配齐
工欲善其事,必先利其器。搭建SpringBoot-Web项目前,必须先准备好这几个工具,版本搭配很重要,不然容易出兼容性问题。
| 工具 | 推荐版本 | 说明 |
|---|---|---|
| JDK | 8/17 | SpringBoot 2.x推荐JDK8,3.x推荐JDK17(兼容更好) |
| Maven | 3.6.x及以上 | 版本太低会不支持SpringBoot的依赖管理 |
| IDE | IntelliJ IDEA/Eclipse | IDEA的Maven集成更友好,推荐新手使用 |
| SpringBoot | 3.2.x(稳定版) | 选择官方稳定版,避免尝鲜新版本的坑 |
验证环境是否就绪:
- 打开命令行,输入
java -version,能看到JDK版本号; - 输入
mvn -v,能看到Maven版本号和JDK关联信息。
二、 两种搭建方式:Maven手动创建 vs Spring Initializr快捷生成
搭建SpringBoot-Web项目有两种方式,一种是手动创建Maven项目+配置依赖,适合理解底层逻辑;另一种是用Spring Initializr一键生成,适合快速开发。我们两种都讲,按需选择。
方式1:手动创建Maven项目(吃透底层配置)
这种方式能让你彻底搞懂Maven和SpringBoot的依赖关系,新手建议先从这种方式入手。
步骤1:创建普通Maven项目
- 打开IDEA,点击
File → New → Project; - 选择
Maven,取消勾选Create from archetype,点击Next; - 填写项目信息:
- GroupId:公司/组织标识(比如
com.example) - ArtifactId:项目名称(比如
springboot-web-demo) - Version:版本号(比如
1.0-SNAPSHOT)
- GroupId:公司/组织标识(比如
- 选择项目存储路径,点击
Finish。
步骤2:配置Maven核心依赖(关键!)
打开项目根目录下的pom.xml,添加SpringBoot的父依赖和web启动器依赖——这是SpringBoot-Web项目的核心。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- SpringBoot父依赖:统一管理依赖版本,避免版本冲突 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
<relativePath/>
</parent>
<!-- 项目基本信息 -->
<groupId>com.example</groupId>
<artifactId>springboot-web-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>springboot-web-demo</name>
<!-- 核心依赖:spring-boot-starter-web -->
<dependencies>
<!-- Web启动器:内置Tomcat、SpringMVC、Jackson等核心组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 测试依赖:可选 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 打包插件:将项目打包成可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
</project>
重点解析:
- spring-boot-starter-parent:是SpringBoot的父POM,作用是统一管理依赖版本。比如我们引入
spring-boot-starter-web时不用写版本号,就是因为父POM已经定义好了。 - spring-boot-starter-web:Web项目的核心启动器,内置了:
- 嵌入式Tomcat服务器(不用手动配置Tomcat);
- SpringMVC核心组件(DispatcherServlet、控制器映射等);
- Jackson(处理JSON数据序列化/反序列化)。
- spring-boot-maven-plugin:打包插件,能将项目打包成可独立运行的jar包,直接通过
java -jar命令启动。
步骤3:创建项目目录结构
SpringBoot项目有固定的目录规范,按照这个结构创建,能避免很多配置问题:
src/main/java/com/example/
├── SpringbootWebDemoApplication.java // 启动类
├── controller/ // 控制器层
├── service/ // 业务逻辑层
└── mapper/ // 数据访问层(可选)
src/main/resources/
├── application.properties // 核心配置文件
├── static/ // 静态资源目录(js、css、img)
└── templates/ // 模板文件目录(thymeleaf、freemarker)
步骤4:编写启动类(项目入口)
在com.example包下创建启动类,这是SpringBoot项目的唯一入口,必须加@SpringBootApplication注解。
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 核心注解:标记这是SpringBoot应用的启动类
@SpringBootApplication
public class SpringbootWebDemoApplication {
public static void main(String[] args) {
// 启动SpringBoot应用
SpringApplication.run(SpringbootWebDemoApplication.class, args);
}
}
方式2:Spring Initializr一键生成(快速开发)
如果觉得手动配置麻烦,可以用Spring官方提供的Initializr工具一键生成项目,适合实际开发。
步骤1:打开Spring Initializr官网
访问https://start.spring.io/,这是Spring官方的项目生成工具。
步骤2:配置项目信息
- Project:选择
Maven Project; - Language:选择
Java; - Spring Boot:选择
3.2.0(稳定版); - Group、Artifact、Name:和手动创建时一致;
- Dependencies:添加
Spring Web依赖。
步骤3:生成并导入项目
点击Generate按钮,下载项目压缩包,解压后用IDEA打开即可——项目的pom.xml、目录结构、启动类都已经自动生成好了。
三、 实战开发:写一个简单的Web接口
项目搭建好后,我们来写一个RESTful接口,测试项目是否能正常运行。
步骤1:编写控制器(Controller)
在controller包下创建HelloController:
package com.example.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
// 核心注解:@RestController = @Controller + @ResponseBody
@RestController
public class HelloController {
// 定义GET请求接口,路径为/hello
@GetMapping("/hello")
public String hello() {
return "Hello SpringBoot-Web!";
}
// 带参数的GET接口,路径为/hello/{name}
@GetMapping("/hello/{name}")
public String helloWithName(@PathVariable String name) {
return "Hello " + name + "!";
}
}
注解解析:
@RestController:组合注解,等价于@Controller + @ResponseBody,表示这个类是控制器,且返回值直接作为JSON/字符串响应,不用走视图解析器。@GetMapping("/hello"):映射GET请求,路径为/hello。
步骤2:配置核心参数(application.properties)
打开src/main/resources/application.properties,添加基础配置:
# 服务器端口(默认8080,避免冲突可修改)
server.port=8081
# 应用名称
spring.application.name=springboot-web-demo
# 静态资源路径(默认classpath:/static/)
spring.web.resources.static-locations=classpath:/static/
步骤3:启动项目并测试
- 右键点击启动类
SpringbootWebDemoApplication,选择Run; - 控制台看到如下日志,说明启动成功:
Tomcat started on port 8081 (http) with context path '' Started SpringbootWebDemoApplication in 1.5 seconds (process running for 2.0) - 打开浏览器,访问
http://localhost:8081/hello,页面显示Hello SpringBoot-Web!; - 访问
http://localhost:8081/hello/Java,页面显示Hello Java!。
四、 进阶操作:打包部署+静态资源访问
搭建完项目,还要知道怎么打包部署,以及如何访问静态资源,这是实际开发中必须掌握的技能。
1. 打包成可执行Jar包
- 打开IDEA的
Terminal终端,输入命令:mvn clean package - 打包成功后,在项目的
target目录下会生成一个springboot-web-demo-1.0-SNAPSHOT.jar文件; - 打开命令行,进入
target目录,输入启动命令:java -jar springboot-web-demo-1.0-SNAPSHOT.jar - 同样可以访问
http://localhost:8081/hello,说明打包部署成功。
2. 静态资源访问实战
SpringBoot默认会扫描classpath:/static/目录下的静态资源(js、css、img),我们来测试一下:
- 在
src/main/resources/static目录下创建index.html:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>SpringBoot静态资源</title> </head> <body> <h1>这是静态资源页面</h1> </body> </html> - 重启项目,访问
http://localhost:8081/index.html,就能看到这个页面。
五、 高频踩坑指南:5个新手必遇问题及解决方案
我整理了搭建SpringBoot-Web项目时最容易踩的5个坑,结合实战经验给出修复方案。
坑1:项目启动失败,提示“端口被占用”
- 原因:
server.port配置的端口被其他程序占用(比如默认的8080端口); - 解决方案:
- 在
application.properties中修改端口:server.port=8082; - 或者在命令行中杀死占用端口的进程(Windows用
netstat -ano | findstr 8080,Linux用lsof -i:8080)。
- 在
坑2:依赖冲突,提示“ClassNotFoundException”
- 原因:手动添加的依赖版本和SpringBoot父POM的版本不一致;
- 解决方案:
- 尽量使用父POM管理的版本,不要手动指定依赖版本;
- 用Maven的
dependency:tree命令查看依赖树,排除冲突的依赖:mvn dependency:tree
坑3:控制器返回404错误
- 原因:
- 启动类的包层级不对(比如启动类在
com.example,控制器在com.test,导致扫描不到); - 注解写错(比如用了
@Controller而不是@RestController,且没有加@ResponseBody);
- 启动类的包层级不对(比如启动类在
- 解决方案:
- 确保控制器在启动类的子包下,或者在启动类上添加
@ComponentScan("com.test")指定扫描包; - 正确使用
@RestController注解。
- 确保控制器在启动类的子包下,或者在启动类上添加
坑4:静态资源访问404
- 原因:静态资源放错目录,或者修改了静态资源路径但配置错误;
- 解决方案:
- 默认将静态资源放在
classpath:/static/目录下; - 如果自定义路径,要在
application.properties中配置spring.web.resources.static-locations。
- 默认将静态资源放在
坑5:打包后运行jar包提示“找不到主类”
- 原因:没有添加
spring-boot-maven-plugin打包插件,或者插件版本和SpringBoot版本不一致; - 解决方案:在
pom.xml中添加正确的打包插件,版本和SpringBoot父依赖版本保持一致。
六、 总结与面试要点
用Maven搭建SpringBoot-Web项目的核心就是依赖配置+启动类+控制器开发,记住这几个关键点:
spring-boot-starter-parent是版本管理核心,spring-boot-starter-web是Web项目的基石;@SpringBootApplication是启动类的核心注解,负责扫描组件和开启自动配置;@RestController用于编写RESTful接口,返回JSON/字符串响应。
最后整理几个面试中常问的知识点:
- spring-boot-starter-web包含哪些核心组件?(嵌入式Tomcat、SpringMVC、Jackson)
- SpringBoot项目的启动流程是什么?(启动类
main方法→SpringApplication.run()→加载自动配置类→启动Tomcat→扫描控制器) - 如何打包SpringBoot项目成可执行jar包?(用
spring-boot-maven-plugin插件,执行mvn clean package)
希望这篇文章能帮你彻底搞定SpringBoot-Web项目的搭建,从手动配置到实战开发,再到避坑指南,一步到位。如果觉得有用,欢迎点赞、收藏、关注,后续会分享更多SpringBoot实战干货!
更多推荐


所有评论(0)