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

