SpringBoot , Thymeleaf
Springboot 외부 경로의 리소스 또는 업로드 파일 접근
수동애비
2022. 12. 14. 17:55
반응형
Springboot 를 배포 후 종종 변경되는 일부 컨텐츠 파일만을 교체해야 할 경우 static 리소스 안에 뒀을 경우 다시 빌드 하고 배포를 해야하기 때문에 그런 파일들을 별로도 외부의 고정된 경로에 두어 파일만 교체 할 수 있도록 할 경우의 방법이다.
아래와 같이 임의 클래스를 생성후 @Configuration 어노테이션 추가 후 WebMvcConfigurer 인터페이스를 상속 후 ResourceHandler 와 ResourceLocations 를 등록해주면 된다.
import java.util.concurrent.TimeUnit;
@Configuration
public class ResourceConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/download/**")
.addResourceLocations("file:///E:/webserver_storage/")
// 접근 파일 캐싱 시간
.setCacheControl(CacheControl.maxAge(1, TimeUnit.MINUTES));
}
}
요청 url 접근자 지정 (서버 구동 후 http://localhost:8080/download/xxx~ 식으로 접근할 수 있게 한다.)
registry.addResourceHandler("/download/**")
리소스 파일의 실제 주소 설정 (경로 끝에 / 를 붙여 줘야 한다.)
// 리눅스 경우 root에서 시작하는 폴더 경로 지정 할 경우
.addResourceLocations("file:///usr/download/")
// 리소스 템플릿 경로를 지정할 경우
.addResourceLocations("classpath:/templates/", "classpath:/static/")
// 윈도우에서 실행 시 다음과 같은 형태로 드라이브 문자 포함 경로 지정
.addResourceLocations("file:///E:/webserver_storage/")