이전에 js로 작업을 할 때는 깃허브에 올리면 안되는 부분을 .env 파일을 통해서 관리했었다.

이번에는 인텔리제이에서 java로 작업하는데 똑같이 .env 파일로 작성하기 위해서 여러 시도를 했다.

처음에는 깃허브에 올리는 properties 파일과 실제 개발에 사용하는 properties 파일을 두 개를 가지는 방법을 생각했다.

하지만 properties 파일을 두 개 가지고 있으니 계속 오류가 발생하고 관리하기가 어렵기도 하고,

직관적으로 properties 파일을 찾기가 어려워 다른 방법을 생각했다.

두 번째 방법은 인텔리제이의 edit configuration 안의 option 중에서 properties의 중요한 부분을 환경 변수로 선언하고 environment variables:에 환경 변수를 추가하는 방법이었다.

이는 나쁘지 않는 방법이었으나, 파일을 추가하거나 일일히 환경 변수를 추가해야 했는데 깃허브에서 새로운 main branch를 clone 할 때마다 매번 파일을 추가하거나 환경 변수를 추가하는 것이 귀찮았다.

그래서 찾아낸 마지막 방법은, spring.config.import=optional:classpath:.env 를 사용하는 것이다.

이를 나누어서 설명하자면

spring.config.import : 다양한 형태의 외부 설정 소스(파일, 디렉터리, url)들을 명시적으로 지정 가능

optional: : 설정 소스의 존재 여부가 선택적임을 의미, 있으면 적용되고 없어도 실행되는데 오류가 발생하지 않음

classpath:.env : 설정 소스의 경로를 지정, 보통 resources를 클래스패스에 포함하고 여기에서는 .env 파일까지 설정

그리고 .env 파일에 properties에 필요한 환경변수를 선언하고 이를 .gitignore에 추가하려 추적되지 않게 처리했다!

이를 통해서 속머리를 앓던 properties를 실수로 push하는 문제로부터 완전히 해방되게 되었다.

Untitled

# MySQL DataSource configuration
spring.datasource.url=jdbc:mysql://localhost:3306/trueecho_local?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=hyoung12!@