如何修复Spring中“未找到静态资源”404错误并改用动态资源
问题分析与解决方案
问题根源
- 同时引入
spring-boot-starter-web(Servlet栈)和spring-boot-starter-webflux(Reactive栈),Spring Boot会默认启用Reactive Web环境,导致Servlet类型的@RestController无法被正确识别映射,请求被转发到静态资源处理器。 - 主类存在类名不一致问题:
AoeEngineApplication的main方法中启动的是TestEngineApplication,可能引发组件扫描异常。 - 包扫描配置
scanBasePackages = "controllers"需确保ManagementService类确实位于controllers包下,否则Controller不会被加载。
解决步骤
1. 移除冲突依赖
根据业务需求保留一个Web栈,若无需Reactive功能,直接移除webflux依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 移除webflux依赖,消除环境冲突 --> <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> -->
2. 修正主类启动代码
确保启动类名与main方法中引用的类一致:
@SpringBootApplication(scanBasePackages = "controllers") public class TestEngineApplication { // 修正类名,与启动入口保持一致 public static void main(String[] args) { SpringApplication.run(TestEngineApplication.class, args); } }
3. 验证Controller包路径
确认ManagementService类的包声明为package controllers;,保证被组件扫描机制覆盖。
4. 使用正确的请求路径
结合上下文配置,正确的请求地址为:http://localhost:8080/TestEngine/batch
验证效果
启动应用后发送GET请求到上述地址,应返回200 OK状态码和"Test"文本,日志会显示请求被映射到ManagementService的getDetails方法,而非静态资源处理器。
内容的提问来源于stack exchange,提问作者GC_
相关产品推荐
相关产品推荐

