Spring Boot + React 웹 프로젝트를 빌드해서 실행하려고 하는데 초기화면이 뜨지 않고 404(Not Found) 오류가 발생했다.
백엔드와 프론트엔드를 각각 실행(개발 단계) 할 때에는 정상 동작했지만 배포단계에서는 오류가 발생해서 구글링 하다가 아래 링크한 블로그를 참조하여 해결할 수 있었다.
참고: https://puzzle-making.tistory.com/289
spring boot - react 프로젝트 빌드하기 (index.html을 못찾는 문제 해결)
https://velog.io/@u-nij/Spring-Boot-React.js-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85 Spring Boot + React.js 개발환경 연동하기 Spring Boot와 React.js를 연동해 개발환경을 만들고, 빌드해서 jar 파일로까지 만들어
puzzle-making.tistory.com
1. 원인 분석
- 백엔드(Spring Boot)와 프론트엔드(React)를 각각 띄워서 실행하면 정상 동작함
- Gradle Build(Spring Boot + React)를 한 후 생성된 JAR 파일을 "java -jar 파일명.jar" 명령어로 실행하면 404 오류 발생함
- 기본적인 프로젝트에 Spring Security가 추가되어 있어서 이쪽 부분에 문제가 있는 것으로 예상됨
2. 해결 방법 조사
- Gradle Build 명령어부터 React 설정 관련 내용을 순차적으로 조사함 (혹시 내가 잘못 설정한 값들이 있나 해서.. 그런 적이 많음;;)
- Spring Security를 제외한 시작 프로젝트를 다시 만들어서 Build하고 실행해 봄
- 정상 동작하는 것을 확인하고 Spring Security 관련 설정을 조사하여 해결함
3. 적용
- CORS를 처리하기 위해 만든 WebMvcConfig.java 안에 EnableWebMvc라는 어노테이션으로 인해 발생한 이슈였다.
( CORS : Cross Origin Resource Sharing(교차 출처 리소스 공유)의 약자로, 서로 다른 출처(url, port, domain)에 있는 웹 페이지나 서버가 서로의 자원에 접근할 수 있도록 허용하는 보안 메커니즘으로 기본적으로 막혀있다.)
- @EnableWebMvc를 주석한 후 정상 동작함을 확인했다.
(`@EnableWebMvc`을 사용하면 Spring Boot의 Web MVC 자동설정이 이루어지지 않는다. 그래서 Controller로 설정한 API가 아닌 요청을 Static Resource에서 찾는 것을 수행하지 않은 것이다.)
마무리
- 이전에도 구글링을 통해 찾은 소스를 별 생각 없이 복사해서 사용한 것이 문제가 되었다. 항상 모든 내용을 찾아볼 수는 없겠지만 기본적인 것들은 가져가서 사용하기 전에 내용을 파악해야 함을 다시 한번 느꼈다..ㅠㅠ
'Spring' 카테고리의 다른 글
[Spring Boot] JPA Entity에 현재 시간 적용 방법 (0) | 2024.12.29 |
---|---|
[Spring] Jwt 인증 적용 예제 (1) | 2024.12.12 |
[Java]자바 공부 시작! (0) | 2019.01.05 |