1. 디폴트
정적 자원 핸들링에는 디폴트로 ResourcehttpRequestHandler가 사용된다.
디폴트로, 아래 경로의 자원을 '/' URI 패턴으로 제공한다.
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
예로, classpath:/static/myface.html 이 있을 때,
http://example.com/myface.html 경로로 접근할 수 있다.
2. 커스터마이징
주의: 설정 커스터마이징 시 디폴트 설정은 사라진다. 따로 설정하지 않으면 더이상 '/' 패턴으로 정적 자원 접근이 불가능하다.
프로퍼티 방식
spring.mvc.static-path-pattern=/mystatic/**
spring.resources.static-locations=classpath:/mystatic/,file:/shared/mystatic/
URI 패턴, 자원 위치 모두 콤마로 구분하여 2개 이상 설정할 수 있다.
위 설정은 아래와 같이 매핑된다
http://example.com/mystatic/myface.html => classpath:/mystatic/myface.html (없으면 파일시스템 /shared/mystatic/myface.html)
위와 같이, 클래스패스가 아닌 일반 파일시스템 접근에는 'classpath' 대신 'file:' 을 사용한다. (윈도우는 'file://')
자바 방식
위 설정을 자바 방식으로 하면 아래와 같다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/mystatic/**")
.addResourceLocations("classpath:/mystatic/", "file:/shared/mystatic/");
}
}
WAR 파일의 경우, webapp/mystatic/ 에 자원이 있다면, 아래와 같이 'classpath:'를 빼고 설정한다.
spring.mvc.static-path-pattern=/mystatic/**
spring.resources.static-locations=/mystatic/
'Java > Spring Boot' 카테고리의 다른 글
스프링 어플리케이션(+컨텍스트) 이벤트 (0) | 2022.08.08 |
---|---|
test] 어노테이션 정리 (1) | 2022.08.03 |
JDK 7 에서 Spring JUnit 5 을 사용한 Gradle test (0) | 2020.04.14 |
Issue with Thymeleaf strict HTML parsing (0) | 2020.04.07 |
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test (0) | 2019.02.16 |