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 |
---|
최근댓글