0

0

Spring Boot @GetMapping 路径映射指南:解决404错误

花韻仙語

花韻仙語

发布时间:2025-11-17 18:19:02

|

390人浏览过

|

来源于php中文网

原创

spring boot @getmapping 路径映射指南:解决404错误

在使用 Spring Boot 开发 Web 应用时,若 `@GetMapping` 注解未明确指定路径,访问根 URL 可能会导致 404 Whitelabel Error。本文旨在阐述 `@GetMapping` 注解的正确路径映射机制,指导开发者如何通过为该注解提供显式路径参数来避免此类路由错误,确保 HTTP GET 请求能够准确地映射到对应的控制器方法。

理解 Spring Boot 中的请求映射

Spring Boot 应用程序通常通过 @RestController 或 @Controller 注解的类来处理传入的 HTTP 请求。其中,@GetMapping 是一个便捷的组合注解,用于将 HTTP GET 请求映射到特定的处理方法。然而,一个常见的误解是,当 @GetMapping 不带任何参数时,它会自动映射到应用程序的根路径(/)。实际上,为了确保请求能够被正确路由,@GetMapping 必须显式地指定一个或多个路径。

当您在方法上仅使用 @GetMapping 而不提供路径参数时,Spring 框架并不知道该方法应该响应哪个具体的 URL。因此,当客户端尝试访问应用程序的根路径或其他未显式映射的路径时,Spring DispatcherServlet 将无法找到匹配的处理程序,从而返回 404 Not Found 错误,通常表现为“Whitelabel Error Page”。

正确使用 @GetMapping 进行路径映射

解决此问题的关键在于为 @GetMapping 注解提供一个明确的路径参数。这个路径可以是根路径 /,也可以是任何自定义的路径,例如 /hello 或 /api/data。

示例代码:修复前的控制器

以下是可能导致 404 错误的原始代码示例:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

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

    // 错误示例:未指定路径,可能导致404
    @GetMapping
    public String index() {
        return "Greetings from Spring Boot!";
    }
}

当运行上述代码并尝试访问 http://localhost:8080/ 时,您会看到一个 404 Whitelabel Error Page。控制台日志可能显示 DispatcherServlet 已经初始化,但没有关于 / 路径的映射信息。

Krea AI
Krea AI

多功能的一站式AI图像生成和编辑平台

下载

示例代码:修复后的控制器

为了正确映射请求,我们需要为 @GetMapping 注解指定一个路径。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {

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

    // 正确示例1:映射到根路径 "/"
    @GetMapping("/")
    public String home() {
        return "Welcome to the home page!";
    }

    // 正确示例2:映射到自定义路径 "/hello"
    @GetMapping("/hello")
    public String hello() {
        return "Greetings from Spring Boot!";
    }

    // 您也可以使用 path 属性,效果相同
    @GetMapping(path = "/greeting")
    public String greeting() {
        return "Hello from /greeting!";
    }
}

在上述修复后的代码中:

  • @GetMapping("/") 将 home() 方法映射到应用程序的根路径 http://localhost:8080/。
  • @GetMapping("/hello") 将 hello() 方法映射到 http://localhost:8080/hello。
  • @GetMapping(path = "/greeting") 将 greeting() 方法映射到 http://localhost:8080/greeting。

通过这种方式,Spring DispatcherServlet 就能找到对应的处理器方法,并返回预期的响应。

关键注意事项与排查

  1. 显式路径是必需的: 始终为 @GetMapping(以及 @PostMapping, @PutMapping, @DeleteMapping 等)提供一个明确的路径。
  2. spring-boot-starter-web 依赖: 确保您的 pom.xml 文件中包含了 spring-boot-starter-web 依赖。这是 Spring Boot 构建 Web 应用程序的基础,它包含了内嵌的 Tomcat 服务器、Spring MVC 等核心组件。
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    原始的 pom.xml 中已经包含了此依赖,因此这个问题通常不是由于缺少依赖引起的。

  3. 控制台日志分析: 仔细检查应用程序启动时的控制台日志。成功的启动会显示 Tomcat 监听的端口和上下文路径。例如:
    Tomcat started on port(s): 8080 (http) with context path ''

    这表示应用程序在 http://localhost:8080 上运行,且根路径为 /。

  4. @RestController 或 @Controller: 确保您的类被 @RestController(对于 RESTful API)或 @Controller(对于传统的 MVC 应用)注解。这些注解告诉 Spring 这是一个处理 HTTP 请求的组件,并会扫描其中的请求映射方法。
  5. 父级路径(Optional): 您也可以在类级别使用 @RequestMapping("/api"),然后在方法级别使用 @GetMapping("/users"),这样完整的路径将是 /api/users。这有助于组织和管理大量端点。

总结

当在 Spring Boot 中遇到 @GetMapping 相关的 404 错误时,最常见的原因是未给 @GetMapping 注解提供明确的路径参数。通过为 @GetMapping 指定一个字符串路径,您可以清晰地定义每个控制器方法所响应的 URL,从而有效地解决请求无法映射的问题,并确保您的 Web 应用程序按预期工作。遵循这些简单的路径映射规则,将帮助您构建健壮且易于维护的 Spring Boot 应用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

173

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

98

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

170

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

158

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

200

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2024.02.23

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

Sass 教程
Sass 教程

共14课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号