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

Spring Boot新增RestController类无法访问,请求排查帮助

排查Spring Boot MovieController访问白标错误的步骤

1. 确认主类的组件扫描配置

主类MoviesApplication必须添加@SpringBootApplication注解——它默认会扫描主类所在包及其子包的所有Spring组件。如果主类手动指定了@ComponentScan且范围排除了当前包,或者没加@SpringBootApplication,会导致MovieController无法被Spring注册。

正确的主类示例:

@SpringBootApplication
@RestController
public class MoviesApplication {
    public static void main(String[] args) {
        SpringApplication.run(MoviesApplication.class, args);
    }

    @GetMapping("/")
    public String home() {
        return "Hello from main controller";
    }
}

2. 检查MovieController代码正确性

确保@GetMapping的路径匹配正确,且方法为public(Spring仅暴露public方法作为接口端点):

@RestController
@RequestMapping("/api/v1/movies")
public class MovieController {

    // 无参数的@GetMapping会匹配"/api/v1/movies"
    @GetMapping
    public String getAllMovies() {
        return "All Movies";
    }
}

注意:如果写@GetMapping("/"),则匹配的是/api/v1/movies/,此时访问/api/v1/movies可能因路径不匹配返回404。

3. 查看启动日志验证端点注册

启动应用时,检查控制台日志是否存在类似Mapped "{[/api/v1/movies],methods=[GET]}"的条目:

  • 无此条目:说明Controller未被注册,回到第一步检查组件扫描范围
  • 有此条目:说明端点已注册,需排查以下情况:
    • 检查application.properties/application.yml是否设置了上下文路径(如server.servlet.context-path=/app),此时访问路径应为localhost:8080/app/api/v1/movies
    • 排查是否有自定义拦截器/过滤器拦截了/api/v1/movies路径,导致请求无法到达Controller

4. 确认Web依赖完整性

确保项目依赖中包含Spring Web starter:
Maven(pom.xml):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Gradle(build.gradle):

implementation 'org.springframework.boot:spring-boot-starter-web'

缺少该依赖会导致Spring无法配置Web相关组件,Controller端点无法生效。

5. 清理重建项目

IDE缓存可能导致类未正确编译,执行以下命令后重启应用:

  • Maven:mvn clean install
  • Gradle:gradle clean build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:42:46