본문 바로가기
어딘가에 맞춰질 퍼즐 조각들

@Value 애너테이션으로 환경변수를 설정하고 참조하는 방법 1분 요약 정리

by 황원용 2023. 1. 12.
728x90

 보안 등의 이유로 특정 값을 코드나 깃허브에 노출하고 싶지 않을 때 환경변수를 설정하고 참조하는 방식으로 처리를 하게 된다. 이 글에서는 인텔리제이에서 환경변수를 참조하는 방법을 두 가지 소개한다.

 

 

 

📌 1. 애너테이션 사용

💡 특징
- env.yml or env.properties에 값을 넣고 깃허브에는 올리지 않는다.(.gitignore에 추가)
- 깃허브에는 레파지토리 설정을 통해 따로 환경변수를 설정해주면 된다.

- 애너테이션 추가 위치에 따라 애플리케이션 전체를 커버할 수도 있다.

env.yml 파일을 생성

  • env.yml 파일을 생성하고 파일 안에 환경 변수명과 값을 설정한다.

("classpath:{yml 파일 이름}.yml")

  • 애플리케이션 실행 클래스나,  적용할 특정 클래스에 @PropertySource 애너테이션을 붙이고 yml이나 properties의 경로를 적는다.
  • 애플리케이션 실행 클래스에 붙이면 테스트 패키지를 포함한 코드 전범위에서 사용이 가능하다.

 

 

  • 적용할 필드에 @Value 애너테이션을 붙이고 yml이나 properties에 적은 변수명과 같은 이름을 "${}" 중괄호 안에 적으면 끝이다.
  • 참고로 @Value 애너테이션은 lombok이 아니라, 
import org.springframework.beans.factory.annotation.Value;
  • 위의 스프링프레임워크에서 제공하는 @Value를 사용해야 한다.

 

참고로 리스트 형식의 데이터라면

@Value("#{'${addresses}'.split(',')}")
private List<String> addresses;
  • 위와 같은 방식으로 설정한 후 yml or properties에는
  • addresses : http://address1.com,http://address2.com,http://address3.com,http://address4.com
  • addresses= http://address1.com,http://address2.com,http://address3.com,http://address4.com 
  • 라고 적어주면 콤마(,)를 기준으로 나뉘어져 문자열 리스트 형태로 적용된다.

 

 

 

📌 2. 인텔리제이 내 Configuration에서 설정

💡 특징
- env.yml or properties를 사용하지 않는다.
- 애너테이션을 이용하는 방법과 마찬가지로 코드 내에 있는 ${Name}을 통해 환경변수를 불러올 수 있다.
- 설정 파일을 따로 사용하지 않으므로 노출 위험이 상대적으로 적다.

- 테스트 패키지에는 따로 적용해주어야 한다.
- 즉, configuration마다 환경변수 설정을 따로 해야하는 듯하다.(내가 방법을 모르는 것 일수도 있다.)

Edit Configurations... 클릭

  • 인텔리제이 상단에 Configuration이 모여있는 곳을 클릭한다.

 

Modify Options

  • Modify Options를 클릭한다.
  • Override configuration properties를 클릭한다.

 

  • NAME에 변수명을 적는다.
  • Value에는 설정할 값을 적는다.
  • 전부 체크 후 Apply를 누른다.
728x90