티스토리 뷰

Spring

static resources in spring boot

§무명소졸§ 2020. 7. 11. 09:46

정적 자원은  *.html , *.js , *.css 등과 같은 웹,와스가 분리 될 경우 웹서버(아파치, 웹투비 등)에 관리되는 자원들이다. Spring Boot 로 서비스할 때 별도의 웹서버 구성을 하지 않는다면 정적 자원 접근을 위한 설정이 존재한다. Spring Boot 에서 정적 자원을 접근하는 방법을 알아보겠다. 

Spring Web

Spring boot 에서는 정적 자원 접근을 위한 default 설정을 가지고 있다. org.springframework.boot.autoconfigure.web.ResourceProperties 파일을 살펴보면 아래와 같은 코드에서 default 설정을 확인할 수 있다.

public class ResourceProperties {
    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", 
    "classpath:/resources/", "classpath:/static/", "classpath:/public/"};

 

그렇기에 별도의 설정 없이도 아래와 같이 hello.html을 위치 시켜놓고 /hello.html URI를 호출 하면 정적 자원의 서비스를 할 수 있다.

하지만 위치를 직접 설정하고 싶으면 application.yml (or .properites) 파일을 아래와 같이 수정하면 된다. 단 여기서 주의할 점은 specifiy 하게 선언할 경우 기존의 deafult 설정 경로들은 삭제된다. 아래는 설정 방법과 접근 경로이다.

classpath: 이 부분이 resources 경로와 매핑되는 건 resources 폴더를 SpringBoot 에서 classpath 기본으로 설정했기 때문이다.classpath 가 아닌 파일 경로를 직접 접근하고 싶으면 file:/ 을 사용하면 된다.

spring:
  resources:
    static-locations: file:/usr/web/web-resources/

Spring Web Flux

spring boot 2 부터 spring reactive 기술인 spring web flux 를 공식적으로 지원한다. embded 미들웨어도 tomcat 이 아닌 netty 서버이다. spring web flux 를 사용할 경우 설정 정보 중에  static-path-pattern 속성은 구분이 된다. (static-locations 속성은 같다.)

spring:
  resources:
    static-locations: classpath:/web-resources/
  webflux:
    static-path-pattern: /web-flux/**

'Spring' 카테고리의 다른 글

Non Blocking with Spring boot  (2) 2020.07.30
H2 Console in WebFlux  (0) 2020.07.28
Spring Security (Spring Boot) #4  (0) 2020.02.28
Spring boot 2.x + ehcache 3.x  (1) 2020.01.30
Spring Security (Spring Boot) #3 form login customize  (0) 2020.01.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크