IT/정리

[Java] 시스템 프로퍼티 설정

_하늘여우_ 2021. 6. 25. 22:48

출처 : unsplash

 

 

시스템 프로퍼티

자바는 JVM 위에서 수행된다. 기동이 되면서 시스템 정보 및 사용자 정보를 시스템 프로퍼티에 담아놓고 이를 수정/사용할 수 있게 하고 있다. 다만 시스템에 관련된 정보가 많기 때문에 가급적 조회 용도로 사용하거나 추가해서 사용하는데 주의해서 사용해야 한다.

지난 번 운영 반영 시 시스템 프로퍼티를 잘못 조작하여 시스템 프로퍼티를 날려버린 적이 있어 내용 공유해 본다.

 

import java.util.Iterator;
import java.util.Properties;
import java.util.Set ;

public class GetProperties {

	public static void main(String[] args) {
		// 기본적인 시스템 프로퍼티를 출력
		System.out.println(System.getProperties()) ;
		System.out.println("=================") ;
		
        // 기존 시스템 프로퍼티에 새로운 key-value 추가
		System.setProperty("TEST0", "TEMP") ;
		System.out.println(System.getProperties()) ;	// 기존 시스템 프로퍼티에 추가한 key-value 값을 확인할 수 있음
		System.out.println("=================") ;
		
		// 새로운 프로퍼티 인스턴스 생성 후 key-value 값 설정
		Properties prop2 = new Properties() ;
		prop2.setProperty("TEST1", "TEMP") ;
		System.setProperties(prop2);	// 잘못된 방법. 기존 시스템 프로퍼티 정보에 새로 만든 프로퍼티 값을 덮어버림.
		
		System.out.println(System.getProperties()) ;
		System.out.println("=================") ;
		
		// 시스템 프로퍼티에 추가.
		System.setProperty("TEST2", "TEMP") ;
		System.out.println(System.getProperties()) ;
	}

}

 

setProperties() vs setProperty()

setProperties 메소드는 파라미터로 전달된 프로퍼티로 설정한다. 즉, 기존 프로퍼티를 덮어버리는 것.. ;; (API보기)

setProperty 메소드는 파라미터로 전달된 key, value를 추가한다. (API보기)

 

개발하면서 로그를 자주 찍어서 값을 확인하자! ^^;;