스프링 부트(핵심 원리와 활용)

Ch05. 외부설정과 프로필(1) - 외부 설정(OS 환경 변수)

webmaster 2023. 3. 12. 14:40
728x90

OS 환경 변수(OS environment variables)는 해당 OS를 사용하는 모든 프로그램에서 읽을 수 있는 설정값이다. 한마디로 다른 외부 설정과 비교해서 사용 범위가 가장 넓다.

조회 방법

  • 윈도우 OS:  set
  • Mac, 리눅스 OS: printenv

설정 방법

Google에 검색하면 수많은 방법이 나온다. 검색해 보자

애플리케이션에서 조회

@Slf4j
public class OsEnv {

  public static void main(String[] args) {
    Map<String, String> envMap = System.getenv();
    for (String key : envMap.keySet()) {
      log.info("env {} = {}", key, System.getenv(key));
    }

    //DBURL=dev.db.com (개발 OS 설정)
    //DBURL=prod.db.com (운영 OS 설정)
    //String dburl = System.getenv("DBURL");
  }
}
  • System.getenv() 를 사용하면 전체 OS 환경 변수를 Map 으로 조회할 수 있다.
  • System.getenv(key) 를 사용하면 특정 OS 환경 변수의 값을 String 으로 조회할 수 있다.
  • OS 환경 변수를 설정하고, 필요한 곳에서 System.getenv() 를 사용하면 외부 설정을 사용할 수 있다.

이제 데이터베이스 접근 URL과 같은 정보를 OS 환경 변수에 설정해두고 읽어 들이면 된다. 예를 들어서 개발 서버에서는 DBURL=dev.db.com 과 같이 설정하고, 운영 서버에서는 DBURL=prod.db.com와 같이 설정하는 것이다. 이렇게 하면 System.getenv("DBURL")을 조회할 때 각각 환경에 따라서 서로 다른 값을 읽게 된다

단점

OS 환경 변수는 이 프로그램뿐만 아니라 다른 프로그램에서도 사용할 수 있다. 쉽게 이야기해서 전역 변수 같은 효과가 있다. 여러 프로그램에서 사용하는 것이 맞을 때도 있지만, 해당 애플리케이션을 사용하는 자바 프로그램 안에서만 사용되는 외부 설정값을 사용하고 싶을 때도 있다..

728x90