항상 Repo를 public 으로 관리하다보면, 비밀 키 같은 것들이 올라갈까 노심초사하는 경우가 한두번이 아니다.
보통 환경 변수로 처리를 많이 하지만, 한 두개 일때는 이렇게 할 수 있지만, 조금만 많아져도 처리가 힘들어진다.
나의 경우 처음에는 EnvironmentPrepared 이벤트를 구독해서 커스텀으로 외부 설정파일을 로드해서 Environment에 삽입하는 형식으로 사용하였지만, 이런저런 문제가 있어서 방법을 찾아보다가 다음 방법을 발견했다.
스프링 자체 지원 방법이 있었다.
그렇다. 우리가 흔히 사용하는 .properties 나 .yml 에 다음과 같은 프로퍼티를 작성하게 되면, 스프링이 알아서 그곳에 있는 설정파일을 함께 로드하게 된다.
spring:
config:
import: optional:file:${HOME}/Project/application-test.yml
나의 경우 위와 같이 설정했는데, 이는 예시이다.
optional의 경우 말 그대로, 없어도 예외를 던지지 않는 것을 의미한다.
file 말고도, classpath도 사용할 수 있다.
나의 경우 사용자 home path를 기준으로 하게 하였다.
필요할 경우 환경 변수로 처리해서, 배포하는 환경에 따라 따로 비밀 설정 파일을 배치하는 형식으로도 사용할 수 있을거 같다.