- Published on
Unable to load config data from 'configserver' 해결방법
- Authors
- Name
- 손예지(Liv)
Config Server를 생성해 스프링부트 어플리케이션을 실행하던 중 서버를 실행할 수 없다는 오류를 발견했습니다.
오류 내용
10:44:07.817 [main] ERROR org.springframework.boot.SpringApplication -- Application run failed java.lang.IllegalStateException: Unable to load config data from 'configserver' at
친절하게도 에러 메세지 하단에서 원인을 발견할 수 있었습니다.
Caused by: java.lang.IllegalStateException: File extension is not known to any PropertySourceLoader. If the location is meant to reference a directory, it must end in '/' or File.separator at
원인은 확장자를 인식하지 못했기 때문이라고 되어있습니다. 그렇다면 어떤 부분에서 오류를 준걸까요? 최초의 에러메시지인 configserver 관련 설정을 살펴보면 아래와 같이 설정이 되어있습니다.
# AS-IS
spring:
config:
import:
- "configserver"
해결 방법
다시 오류로 돌아가보면 확장자를 인식할 수 없다는 말은 configserver 을 확장자명으로 인식하려고 했다는 말 입니다. 그런데 여기서 "configserver" 의 의미는 .configserver
로 끝나는 확장자 명을 가진 파일을 읽는 것이 아닌 설정을 Config Server 에서 가져온다는 의미입니다.
spring.config.import
속성은 다른 위치에서 추가로 설정한 데이터를 가지고 올 수 있도록 하는 설정입니다. 여기서 import 된 값들은 우선순위를 갖습니다. 그래서 configserver:
이 config server 의 값을 우선적으로 읽어오게 되는 것입니다.
여기서 콜론(:)은 config server을 프로토콜로 인식하도록 합니다. 클론(:)이 없으면 일반 파일로 인식을 시도합니다.
# TO-BE
spring:
config:
import:
- "configserver:"
알게된점
학습을 할 때 개념 자체 보다도 에러 메세지를 파고들때 몰랐던 것들을 많이 알게 된다는 생각이 듭니다. 특히 MSA 개념에 대해서 학습하면서는 application.yml 파일 설정이 더욱 중요함을 느낍니다. 간단한 문자열이지만 어플리케이션을 실행하는데 영향을 주는 중요한 역할을 하고, spring.config.import 설정에 대해서 알게 되었습니다.
참고자료
Getting started with resilience4j-circuitbreaker
Spring Cloud Config Client
내일배움캠프 MSA 강의 중 Config Server 참고