스프링부트에서 특정 메소드 호출 시 지정한 경로가 잘 맞고, call 같은 아무 내용도 없는 메소드를 호출해도 org.springframework.web.servlet.resource.NoResourceFoundException: No static resource api/sitemaps/heartbeat 이런 에러가 떨어지는 것이 보이는데
이제 원인을 알아보자면 Application 외부에 컨트롤러를 만들어 놔서, 애플리케이션 실행 시 컴포넌트 스캔을 하지 못해, 404 Not Found 에러만 계속 떨어진 것인데 해결방법은 Controller를 Application과 같은 패키지 혹은, 그 아래의 패키지로 옮겨주거나
아니면 Application을 수정해서 @ComponentScan을 사용해, 기본 경로를 상위 패키지로 설정해주면 404 Not Found 에러가 떨어지지 않게 된다
이후 메소드를 호출해보면 404 Not Found 에러가 아닌 멀쩡히 잘 호출되는게 보인다, 마지막으로 두 방법중에 가급적이면 첫 번째 방법을 추천하는데 패키지 구조의 가독성과 관리 용의성이 높아지는데다, 별도의 설정이 필요하지 않기 때문이다
다만 두 번째 방법을 아예 사용하지 말라는 게 아니라, 여러 프로젝트를 하나로 하나로 합칠 때, 여러 모듈에 걸친 스프링 빈을 찾아줘야 하기 때문에 이런 경우에는 @ComponentScan을 사용해주면 되겠다.
Leave a Reply