Http 요청이 들어왔을 때 새로운 리소스를 구성해 제공하는 것이 아니라, 이미 만들어진 자원을 응답해주는 것이다. 대표적으로 html파일을 요청값으로 넘겨줄 수 있다.
기본적으로 Spring Boot에 등록되어 있는 정적리소스의 위치는 다음과 같다.
위에 명시한 위치는 기본적으로 Root와 매핑이 되어있다. 즉 위에 명시한 4가지 기본 리소스 위치는 Root디렉토리를 통해 요청하였을 때 자동으로 파일을 찾아 응답되도록 설정되어있다.
예를 들어 다음과 같은 디렉토리구조를 만들었다고 가정하자 .
resources
ㄴ static
ㄴ hello.html
ㄴ public
ㄴ hi.html
이제 url 을 통해
localhost:8090/hello.html
요청을 보내면 hello.html의 내용을 응답해 화면에 보여주고,
localhost:8090/hi.html
의 요청을 보내면 알아서 public 디렉토리 아래의 hi.html의 내용을 클라이언트에게 응답해 준다.
이렇게 기본적으로 등록되어있는 정적리소스 위치를 유지하면서 커스터마이징한 위치를 추가할 수 있다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/m/**")
.addResourceLocations("classpath:/m/") // 반드시 /로 끝낼 것
.setCachePeriod(20);
}
}
위의 코드를 설명하자면, /m/으로 시작하는 모든 정적리소스 요청에 대하여, /m/이라는 classpath와 매핑할 것을 명시한다. 또한, 리소스에 대한 캐싱처리를 20초로 설정하여 20초 별로 리소스자원에 변동사항이 있었는지 체크하게 된다.