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

Spring Boot RestController访问返回404问题排查与解决

Spring Boot接口访问404问题排查

我编写了以下Spring Boot代码,启动服务后访问http://localhost:8080/api/greet始终返回404页面,请求使用IntelliJ的HTTP工具发送,环境为Windows系统。

代码文件

GreetController.java

package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class GreetController {
        @GetMapping("/greet")
        public String greet() {
            return "Hello World!";
        }
}

DemoApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = {"com.example.demo"})
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

排查与修复方案

  1. 确认端口匹配:查看Spring Boot启动日志,确认服务监听的端口是8080,若有自定义端口配置(如application.properties中的server.port),需使用对应端口访问。
  2. 简化包扫描配置:启动类与Controller同属com.example.demo包,@SpringBootApplication默认会扫描当前包及子包,可去掉scanBasePackages配置,直接使用@SpringBootApplication,避免配置冗余或错误。
  3. 清理项目缓存:在IntelliJ中执行Maven -> Clean再Maven -> Compile,重启服务,解决编译缓存导致的Controller未被加载问题。
  4. 验证Controller扫描状态:查看启动日志,若存在Mapped "{[/api/greet],methods=[GET]}"的日志,说明Controller已被正确映射;若没有,需检查Controller是否放在src/main/java目录下(而非test目录),确保目录结构符合Maven规范。
  5. 检查注解正确性:确认@RestController、@GetMapping、@RequestMapping均导入自org.springframework.web.bind.annotation包,无错引其他包的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:45:00