본문 바로가기

카테고리 없음

스프링 프로젝트에 .env 적용하기(IntelliJ기준)

최근에 스프링 부트, jdbc를 이용해 crud 실습을 진행하면서 

Application.properties에 데이터베이스에 관련한 설정 값들을 추가하였다.

spring.application.name=projectName
spring.datasource.url=jdbc:mysql://my-database.example.com:PortNumber/myDbName
spring.datasource.username=userName
spring.datasource.password=userPassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

그런데 깃 허브에 그대로 프로젝트를 올리면 url, username, password같은 정보들이 그대로 노출이 되어 좋지 않다고 생각했다.

 

그래서 현재 필자의 상황에서 적용할 수 있는  2가지 방법을 찾아왔다.

1. gitignore로 application.properties 숨기기

첫 번째 방법은 매우 간단하다.

.gitignore파일을 만들거나, 이미 있다면 파일안에 들어가서 application.properties, application.yml와 같이 선언해주면 된다.

그러면 Git에 커밋되지 않는다.

 

2. 환경 변수 사용 (.env파일 활용)

일단 프로젝트의 resources디렉토리에 .env파일을 생성한다.

 

그 다음 .env파일에 들어가서 다음과 같이 설정한다.

DB_URL=jdbc:mysql://my-database.example.com:PortNumber/myDbName
DB_ID=userName
DB_PASSWORD=userPassword

 

물론 정보는 개인마다 다를 수 있다. userName, userPassword는 예시일 뿐이다.

.env 파일에 설정 값을 넣고 다시 application.properties파일로 돌아와 이번에는 다음와 같이 수정한다.

spring.application.name=projectName
spring.config.import=optional:file:.env[.properties]
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_ID}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

여기서 중요한 부분은 spring.config.import=optional:file:.env[.properties]설정이다.

이 설정이 SpringBoot가 .env파일을 인식할 수 있게 한다.

 

그 다음은 IntelliJ에서 스프링 어플리케이션을 실행하는 Configuration 버튼 옆에 ⋮ 버튼을 클릭하여 Edit버튼을 클릭한다.

그 다음 빨간 색 원에 있는 Modift options를 클릭한 후 Environment variables를 찾아서 클릭한다.

화면과 같이 클릭하면

 

Enable EnvFile이라는 옵션이 나오는데 체크하고, 아까 만들어둔 .env파일의 경로를

Environment variables에 인식시켜주면 된다.

그러면 일단 스프링 앱은 정상적으로 동작한다.

주의 사항

.gitignore파일에 들어가서 .env를 꼭 적어줘야 한다. 그래야 정보가 숨겨진다.