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
'스프링 부트(핵심 원리와 활용)' 카테고리의 다른 글
| Ch05. 외부설정과 프로필(1) - 외부 설정(커맨드 라인 인수, 커멘드 라인 옵션 인수, 커맨드 라인 옵션 인수와 스프링 부트) (0) | 2023.03.12 |
|---|---|
| Ch05. 외부설정과 프로필(1) - 외부 설정(자바 시스템 속성) (0) | 2023.03.12 |
| Ch05. 외부설정과 프로필(1) - 외부 설정이란? (0) | 2023.03.12 |
| Ch05. 외부설정과 프로필(1) - 프로젝트 설정 (0) | 2023.03.12 |
| Ch04. 자동 구성(Auto Configuration) - 정리 (0) | 2023.03.10 |