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초 별로 리소스자원에 변동사항이 있었는지 체크하게 된다.