반응형

spring boot / viewResolver / static / template / addResourceHandlers / ResourceHandlerRegistry

 

 

 

spring boot view file 경로 설정 을 하고싶었다.

static 말고 다른 경로에 넣고싶었다. 

 

index 요청을 받았을 때,
index.html 파일을 보여주도록 하였다.

 

resources > static > index.html 파일을 만들어주면 화면을 잘 보여준다.

 

 


 

 

근데 파일을 templates 에 넣으면?
다른 내가 만든 디렉토리에 넣으면?

파일을 찾지 못하고 404 에러가 발생한다.

 

spring boot 는 기본적으로 static 만 보는건가?
어느 경로에 있는걸 기본 값으로 가지고 있을까?

 

 

 

찾아보니, 다음과 같은 부분을 발견했다.

 

spring boot 의 기본 CLASSPATH_RESOURCE_LOCATIONS 는 위와같다.

 

 

 

그래서 아래와 같은 위치에 있는 파일들은 별다른 설정 없이도 읽어올 수 있다.
( 절대경로 "/" 는 아래 그림 중 최상위 resources 폴더에 해당)

 

 

참고로, 위 처럼 4개 파일 모두 읽을 수 있는 경로에 있다면
CLASSPATH_RESOURCE_LOCATIONS 배열 중 앞에 있는 파일이 우선순위를 가진다.

 

 


 

기본 설정은 저렇게 되어있다는건 알겠고,

내가 원하는 경로도 읽게하고싶다면 ?

 

설정을 바꿔주면 되겠지?

어떻게 바꿀 수 있나?

 

 

 

 

우선 설정을 변경할 것 이므로,
스프링부트가 기본으로 가지고 있는 Configuration 을 대체할 Bean 을 만들어준다.

아래와 같이 만들면 된다.

1. 클래스를 하나 만든다.
2. @Configuration 을 달아준다.
3. WebMvcConfigurer 를 implements 한다.
4. addResourceHandlers(..) 메소드를 Override 한다.
5. 레지스트리에 핸들러와 로케이션을 추가한다.

 

이제 본인은 다음 경로 중 어디에 파일을 놓아도 문제가 없다.

 

 


 

위에서 설명한 static 파일 경로설정을
yml 을 이용하여 간단하게 처리하는 방법

 

이렇게 처리해주어도 된다. 

yml 파일 경로 참고.

 

 

 


 

 

위에서 언급한 2가지 방법을 동시에 적용하면 어떻게 될까?

@Configuration  설정이 적용되고
yml 파일의 static-locations 설정은 무시된다.

 

반응형

'개발 > SPRING BOOT' 카테고리의 다른 글

spring boot 시작하기  (0) 2021.04.23
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기