728x90
반응형
# application.properties
spring.application.name=suncar
# DB
spring.datasource.url=jdbc:mysql://localhost:3307/suncar
spring.datasource.username=root
spring.datasource.password=0000
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
# JWT
jwt.secret=BTpHjyFDurb0PefLrKP+e4vKKwNCw+rUoMEpQjde7T6EzB9QjtoqC7MFVcHwbFPr+r4/OlR9ZiB5rpG0axOd4Q==
jwt.expiration=86400000
위와 같이, 기존엔 데이터베이스 접속정보와 JWT 정보를 application.properties 파일에 직접 명시해 놓고 사용했었다.
하지만 이런 중요정보가 Git에 함께 올라갈 경우 보안적인 문제가 크기 때문에 환경변수를 이용해 별도로 관리할 필요가 있다.
따라서 dotenv를 사용해 중요정보가 노출되지 않도록 수정하기로 했다.
1. dotenv 의존성 추가
// build.gradle
dependencies {
// 생략..
implementation 'me.paulschwarz:spring-dotenv:3.0.0'
// 생략..
}
build.gradle 파일에 dotenv 의존성을 추가한 후 코끼리 모양 버튼을 눌러 빌드한다.
2. .env 작성
# .env
# local DB
DB_URL=jdbc:mysql://localhost:3307/suncar
DB_USERNAME=root
DB_PASSWORD=0000
# JWT
JWT_SECRET=BTpHjyFDurb0PefLrKP+e4vKKwNCw+rUoMEpQjde7T6EzB9QjtoqC7MFVcHwbFPr+r4/OlR9ZiB5rpG0axOd4Q==
JWT_EXPIRATION=86400000
프로젝트 루트 디렉터리에 .env 파일을 만든다.
.env라는 이름은 환경변수를 관리하는 파일명으로 통용되는 이름이다.
이 파일에 실제 중요 정보들을 담아둔다.
상수처럼 대문자와 언더바로만 작성하되, 따옴표나 공백 없이 값만 작성하면 된다.
3. application.properties 수정
# application.properties
spring.application.name=suncar
# DB
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
# JWT
jwt.secret=${JWT_SECRET}
jwt.expiration=${JWT_EXPIRATION}
이제 환경변수를 사용할 준비를 완료했으니, 사용하기만 하면 된다.
application.properties 로 돌아가 위와 같이 환경변수를 불러온다. ${변수명} 형태로 사용하면 된다.
이렇게만 하면 환경변수를 사용하는 건 끝났다.
4. .gitignore 설정
# .gitignore
# 생략 ...
.env
하지만 환경변수로 중요 데이터를 관리한다고 한들 그 환경변수 파일마저 Git에 올려버리면 소용이 없다.
따라서 .gitignore에 .env를 추가함으로써 Git에 올라가지 않도록 설정해 두자.
만약 이미 Git이 .env 파일을 추적하고 있다면, git rm --cashed .env 명령어로 추적을 멈춰줘야 한다.
=============
728x90
반응형
'Development > 썬카(SunCar) - 개인 프로젝트' 카테고리의 다른 글
[썬카/백엔드] 차량 목록 조회 쿼리 작성 과정에서의 N+1 문제 발생과 해결 (0) | 2025.03.25 |
---|---|
[썬카/백엔드] Swagger를 이용한 API 명세서 도입 (0) | 2025.03.22 |
[썬카/정기 회고] 스프린트 1 종료 (1) | 2025.03.21 |
[썬카/백엔드] Spring Security를 이용한 JWT Access Token 발급 및 검증 로직 작성 (0) | 2025.03.11 |
[썬카/백엔드] Soft delete 구현과 Base Entity 작성 및 적용 (0) | 2025.03.09 |