[프로젝트] Spring boot에서 env 파일 사용하기

chaen-ing·2024년 12월 4일
0

프로젝트

목록 보기
1/2

프로젝트에서 원래 아래와 같은 방법으로 환경변수를 관리하고 있었다.

spring:
  config:
    activate:
      on-profile: local
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: 'jdbc:mysql://localhost:3306/name'
    username: ${SPRING_DATASOURCE_USERNAME} # ex) root
    password: ${SPRING_DATASOURCE_PASSWORD} # ex) 0000
  jpa:
  ...

yml 파일에서 ${} 이 부분에 각자 값을 넣어서 로컬 DB에 접근하는 방식이다. DB 접근은 잘되지만, 모르고 git에 푸시해버릴 수 있는 위험성이 있으므로 env파일을 통해 관리해보기로 했다.

Spring Boot 2.4 이상에서는 spring.config.import 기능을 사용하여 .env 파일을 쉽게 로드하고, 이를 application.properties에서 사용할 수 있다.

1. 루트 디렉토리에 .env 파일 생성

#로컬 DB
DB_USER= ex) root
DB_PASS= ex) 0000
DB_URL= ex) jdbc:mysql://localhost:3306/name

왼쪽에는 변수명 오른쪽에는 사용할 유저명, 비밀번호, URL등을 입력해주면 된다. "" 또는 '' 사용할 필요 X!!

2. gitignore에 추가
gitignore에 .env를 추가해준다.
추가가 제대로 되었다면 .env파일이 이렇게 노란색으로 보인다

3. 기존 yml파일 수정

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: ${DB_URL}
    username: ${DB_USER}
    password: ${DB_PASS}

env파일에서 설정한 변수명을 ${변수명} 형식으로 yml파일에 넣어준다

4. yml파일에 .env import
3번까지 했는데 위와 같은 에러가 떴다. .env 파일에서 설정된 DB_URL 값이 Spring Boot의 application.properties에서 제대로 읽히지 않았다는 것... dotenv import, Config 작성 등등... 이것저것 다 시도해봤는데 결론은 이것

spring:
  config:
    import: optional:file:.env[.properties]  # .env import

yml파일에 이것만 추가해주면 끝!!
잘안되는 경우에는 env파일명이 제대로 설정되어있는지 검토하는 것을 추천한다...(나는 .env가 아니라 env로 해놔서 꽤 오래 찾음...;;)

profile
💻 개발 공부 기록장

0개의 댓글

관련 채용 정보