개발은 하는건가..

Springboot 외부 경로의 리소스 또는 업로드 파일 접근 본문

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/")
Comments