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 파일에서도 절대경로로 수정해서 사용해주면 된다.