스프링부트 HTML 파일 리소스 404일 때

마라탕천재 ㅣ 2024. 10. 15. 20:16

1. 문제 상황

나의 프로젝트에서 html 파일은 /static이 아닌 /static/templates에 존재한다.

따라서 컨트롤러에서 html 을 매핑해주면

css 나 js 와 같은 리소스들이 404 상태였다.



2. 해결 방법

import org.springframework.context.annotation.Configuration;
import org.springframework.http.CacheControl;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.concurrent.TimeUnit;

@Configuration
public class MvcConfiguration implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/assets/**")
                .addResourceLocations("classpath:/static/assets/")
                .setCacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES));
    }
}

WebMvcConfigurer의 리소스 핸들러를 구현해준다.

지금 이 글을 보고 있는 독자들은

registry.addResourceHandler("/assets/**")
        .addResourceLocations("classpath:/static/assets/")

이 부분의 경로를 잘 잡아주면 된다.

또한 html 파일에서도 절대경로로 수정해서 사용해주면 된다.