Spring Boot 404 발생 원인 정리 (React는 있는데 서버가 404인 경우)
2026. 1. 28. 01:25ㆍJava, Spring
반응형
상황 요약
React 페이지는 정상적으로 존재하고 화면도 뜸
React에서 API 요청(fetch / axios)을 보냄
서버 로그에서 404 NOT_FOUND 발생
서버 로그 핵심
DispatcherServlet : GET "/admin/api/fare-result/list?...”
SimpleUrlHandlerMapping : Mapped to ResourceHttpRequestHandler [classpath [static/]]
ResourceHttpRequestHandler : Resource not found DispatcherServlet : Completed 404 NOT_FOUND Mapped to BasicErrorController#error
이 로그가 의미하는 것
1️⃣ 요청은 서버까지 정상 도달함
JwtAuthenticationFilter : authenticated user ...
- JWT 인증 성공
- Security 문제 아님
2️⃣ Spring MVC가 처리할 컨트롤러를 못 찾음
Mapped to ResourceHttpRequestHandler [classpath [static/]]
Spring의 판단:
“이 URL을 처리할 @Controller / @RestController가 없네?
그럼 정적 리소스(static 파일) 요청인가 보다.”
하지만
static/ 경로에도 해당 파일이 없음 → 404
3️⃣ 최종적으로 Spring Boot 기본 에러 컨트롤러가 처리
Mapped to BasicErrorController#error
- BasicErrorController는 Spring Boot가 자동으로 제공
- 개발자가 구현한 게 아님
- 자바 기본도 아님
- 에러 발생 시 마지막으로 응답을 만들어주는 컨트롤러
그래서 결론은?
✅ React 페이지는 존재함
✅ React에서 API 요청도 정상적으로 보냄
❌ 서버에 해당 API URL을 처리하는 컨트롤러가 없음
즉,
React 페이지 404 ❌
서버 API 요청(fetch)이 404 ⭕
가장 흔한 원인 체크리스트
1️⃣ 컨트롤러 매핑 자체가 없음
@GetMapping("/admin/api/cal-result/list")
2️⃣ 클래스 + 메서드 매핑 불일치
@RequestMapping("/admin/api/cal-result") @GetMapping("/lists") // list 아님
3️⃣ context-path 중복
- server.servlet.context-path=/admin
- 그런데 프론트에서 /admin/api/...로 또 요청함
→ 실제 경로 불일치
4️⃣ Controller 스캔 안 됨
- 패키지가 @SpringBootApplication 하위 아님
- @RestController 누락
정상일 때 나와야 하는 로그
Mapped to com.xxx.FareResultController#list
👉 이 로그가 없고
👉 ResourceHttpRequestHandler로 간다면
무조건 컨트롤러 매핑 문제
한 줄 요약
React는 있는데 fetch가 404였다 =
서버에 그 API를 처리하는 컨트롤러가 없거나
URL 매핑이 서로 안 맞았다
반응형
'Java, Spring' 카테고리의 다른 글
| 인텔리제이 - 심볼을 해결할 수 없습니다 -에러 조치 방법 (0) | 2026.01.29 |
|---|---|
| JWT (Json Web Token) (0) | 2026.01.19 |
| [MacOS] JAVA 또는 다른 서버 -사용중인 Port 죽이기, Port Kill (0) | 2026.01.11 |