You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.5.4中@ResponseBody返回字符串触发404白标错误如何解决?

问题根因

从你提供的运行日志可以看到,/login请求被映射到了静态资源处理器ResourceHttpRequestHandler,而非你定义的LoginController中的接口方法,本质原因是Spring Boot没有扫描到你写的LoginController类,导致对应的路由没有注册。

Spring Boot的@SpringBootApplication注解默认仅会扫描主启动类所在的包及其所有子包下的组件。你当前的LoginController位于com.in28minutes.springboot.web.controller包下,只要主启动类SpringBootFirstWebApplication不在com.in28minutes.springboot或者更上层的父包中,该Controller就不会被Spring识别加载,自然访问对应路径就会返回404。

解决方案

你可以任选以下一种方案修复:

方案1(推荐):调整主启动类包位置

将SpringBootFirstWebApplication移动到com.in28minutes.springboot包下,这是Spring Boot官方推荐的标准项目结构,无需额外配置即可自动扫描所有子包下的组件。

方案2:显式指定扫描包路径

如果不想调整现有包结构,可以在@SpringBootApplication注解上添加scanBasePackages参数,手动指定需要扫描的组件包:

@SpringBootApplication(scanBasePackages = "com.in28minutes.springboot.web.controller")
// 若有多个包需要扫描可使用数组格式:scanBasePackages = {"com.xxx.pkg1", "com.xxx.pkg2"}
public class SpringBootFirstWebApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootFirstWebApplication.class, args);
    }
}

验证

修改后重启项目,启动日志中会出现如下类似内容,说明接口路由注册成功,再次访问/login即可正常返回Hello World:

Mapped "{[/login],methods=[GET],produces=[text/plain]}" to public java.lang.String com.in28minutes.springboot.web.controller.LoginController.loginMessage()

内容的提问来源于stack exchange,提问作者mohanaroy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:09:03