spring 프로퍼티를 설정할때 중요정보를 보여주지 않고 따로 환경설정 파일로 분리하고 싶을때가 있을것이다.
그때 dotenv를 적용해서 env파일로 분리하는 방법을 아래 내용에 작성하려고 한다.
build.gradle.kts
//dotenv
implementation ("io.github.cdimascio:java-dotenv:5.2.2")

루트 디렉터리 경로에 .env 파일 생성
.env
SPRING_PROFILES_ACTIVE=local
SECRET=jwt시크릿키
application.yml
spring:
config:
import: optional:file:.env[.properties]
profiles:
active: ${SPRING_PROFILES_ACTIVE} # 기본적으로 local 프로파일 사용 (운영에서는 prod로 변경)
jwt:
expiration_time: 86400000 # 1일
secret: ${secret}
logging:
level:
org.hibernate.SQL: DEBUG # Hibernate 쿼리 로그 출력
config 아래 import 부분을 추가, .env에 설정한 key를 사용
application.kt
package com.contact.management
import io.github.cdimascio.dotenv.Dotenv
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.data.jpa.repository.config.EnableJpaAuditing
@SpringBootApplication
@EnableJpaAuditing
class ManagementApplication
fun main(args: Array<String>) {
runApplication<ManagementApplication>(*args)
val dotenv = Dotenv.load()
System.out.println("SPRING_PROFILES_ACTIVE: " + dotenv.get("SPRING_PROFILES_ACTIVE"));
System.out.println("SECRET: " + dotenv.get("SECRET"));
}
test 코드를 만들어도 되지만 간단하게 테스트 하기위해서 applicaiton.kt에 해당 코드 작성

.gitignore
.env*
- 깃에 커밋시 해당 환경설정 파일이 commit되면 안되므로 맨 아래 라인에 .env*을 추가
git ignore에 .env*을 포함해도 .env파일이 git staging에 보일경우 안보이게 하는법
1. .env 파일을 백업하고 프로젝트에 있는 .env 파일을 삭제
2. 아래 명령어 intelij 터미널에 입력
git rm .env --cached
git add .
git commit -m "remove .env file from git"
git push
3. 이후 다시 루트 디렉터리에 백업한 .env파일을 생성한후 git - commit 클릭

env 파일을 변경해도 커밋 changes에 안보이는것을 확인할수 있음