on
스프링 부트 활용 : 스프링 웹 MVC 4부
스프링 부트 활용
정적 리소스 지원
정적 리소스는 동적으로 생성하지 않은 것, 즉 웹 브라우저나 클라이언트 쪽에서 요청이 들어왔을 때 해당하는 리소스가 이미 만들어져 있어서 그것을 그대로 보내주면 되는 경우를 말한다. 서버에서 어떤 작업을 처리해서 요청이 들어왔을 때 뷰를 만들어 내는 것이 아니라 이미 만들어져 있는 리소스가 있고, 그것을 제공하는 방법이다.
다음 네 가지 위치에 있는 리소스들은 기본적으로 /**
요청에 mapping이 되어서 제공된다.
- classpath:/static
- classpath:/public
- classpath:/resources/
- classpath:/META-INF/resources
예를 들어 /hello.html
이라는 요청이 들어왔을 때 /static/hello.html
이 있으면 그대로 전달하는 것이다. 직접 확인해 보자.
resource의 static 디렉토리 안에 hello.html 파일을 만들어준다.
그리고 애플리케이션을 실행한 후 localhost:8080/hello.html로 들어가보면 응답이 제대로 된 것을 확인할 수 있다.
기본적으로 이런 리소스들, url 패턴은 root부터 mapping이 되어있다. 만약 이 mapping을 변경하고 싶다면 properties를 사용하면 된다.
application.properties 안에 spring.mvc.static-path-pattern =
으로 값을 변경해주면 된다.
spring.mvc.static-path-pattern=/static/**
위와 같이 선언을 하게 되면, 전부 static
루트부터 값을 요청해야 한다.
커스터마이징
정적 리소스 요청은 ResourceHttpRequestHandler가 처리하는 것이다. 기본적으로 제공되는 resource handler는 유지하면서 새로운 resource handler를 추가해서 커스터마이징 할 수 있다.
WebMvcConfigurer의 addResourceHandlers를 사용하는 방법을 살펴보자.
package me.gracenam.demospringmvc.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/m/**")
.addResourceLocations("classpath:/m/")
.setCachePeriod(20);
}
}
src/main/java 디렉토리 아래에 config 패키지를 추가하고 WebConfig 클래스를 만든다. 그리고 addResourceHandlers 메서드를 사용하여 새로운 resource handler를 추가해주었다.
m이라는 요청이 오는 경우를 resource handler로 추가해주었는데 이제 classpath 아래에 m 디렉토리를 만들고 hello.html
을 만들어준다.
기본적으로 스프링이 제공해주는 Resource handler는 캐싱 전략이 필요없지만 커스터마이징 한 경우에는 캐싱 전략을 별도로 해주어야 한다.
Reference
Comments
SPRING BOOT 의 다른 글
-
스프링 부트 활용 : 스프링 데이터 4부 17 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 3부 16 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 2부 15 Sep 2021
-
스프링 부트 활용 : 스프링 데이터 1부 14 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 11부 13 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 10부 10 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 9부 09 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 8부 08 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 7부 03 Sep 2021
-
스프링 부트 활용 : 스프링 웹 MVC 6부 05 Aug 2021
-
스프링 부트 활용 : 스프링 웹 MVC 5부 27 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 4부 13 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 3부 06 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 2부 05 Jun 2021
-
스프링 부트 활용 : 스프링 웹 MVC 1부 30 May 2021
-
스프링 부트 활용 : Spring-Boot-Devtools 30 May 2021
-
스프링 부트 활용 : 테스트 26 May 2021
-
스프링 부트 활용 : 로깅 2부 25 May 2021
-
스프링 부트 활용 : 로깅 1부 23 May 2021
-
스프링 부트 활용 : 프로파일 23 May 2021
-
스프링 부트 활용 : 외부 설정 2부 21 May 2021
-
스프링 부트 활용 : 외부 설정 1부 15 May 2021
-
스프링 부트 활용 : SpringApplication 11 May 2021
-
스프링 부트 원리 : 정리 06 May 2021
-
스프링 부트 원리 : 독립적으로 실행 가능한 JAR 06 May 2021
-
스프링 부트 원리 : 내장 웹 서버 04 May 2021
-
스프링 부트 원리 : 자동 설정 02 May 2021
-
스프링 부트 원리 : 의존성 01 May 2021
-
스프링 부트 시작하기 01 May 2021