티스토리 뷰

1. 요구사항

소스 배포를 할 때 war로 배포하는데 css 하나 고쳐도 다시 패키징하고 재기동해야 합니다. static resource(css, js, image, html, 파일)는 별도로 분리해 주세요. 

소스를 WAR로 배포를 하게 되면 업로드 디렉토리를 소스 바깥으로 분리시켜야 합니다. URL로 업로드 디렉토리를 접근 할 수 있게 해주세요. 

2. 해결안 

  • Apache, Nginx로 설정하면 됩니다. 
  • 스프링에서는 리소스 핸들러에 설정을 하면 됩니다. 

3. 스프링부트에서 리소스 핸들러 설정하기 

(spring boot 2.1.1 기준 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
 
    private static final String CLASSPATH_RESOURCE_LOCATIONS = "classpath:/static/";
 
    @Value("${resource.uploads.root}")
    private String uploadsRoot;
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/uploads/**").addResourceLocations(uploadsRoot).setCachePeriod(31536000);
        registry.addResourceHandler("/assets/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS+"assets/").setCachePeriod(31536000);
        registry.addResourceHandler("/vendor/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS+"vendor/").setCachePeriod(31536000);
        registry.addResourceHandler("/html/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS+"html/").setCachePeriod(31536000);
    }
 
}
 
cs

 

업로드 디렉토리는 properties에서 가져오고 static resource는 프로젝트 내부 디렉토리로 되어 있습니다. 

static resource를 외부 디렉토리에서 관리한다면 업로드 디렉토리처럼 처리하면 됩니다. 

이렇게하면 웹 서버의 도움없이 요청을 외부 디렉토리로 연결 할 수 있습니다. 

댓글
댓글쓰기 폼