개발을 진행하기전 가장 먼저 설정하는것이 바로, 환경에 따른 프로퍼티 값을 갖도록 설정값을
분리하는것! ( 나만 그럴수도 있지만.. )
보통, db커넥션 정보라던가, 현재 환경이 개발인지 운영인지를 알기위한 값을 프로퍼티에 설정해놓고,
배포할때는 이파일은 건들지 않고 처리하여 운영을 한다.
1. 실행시, -D 옵션으로 설정
java 프로그램 실행시 VM 의 옵션으로 -D 를 이용해, 프로퍼티 값을 전달할수 있다.
ex)
java -Dtestkey1=testvalue1 Environment
eclipse 안에서는 Run > Run Configurations 에서 해당값을 입력하여 실행 적용이 가능하다.
사용할때는 프로그램내에서 System.getProperty 로 참조 가능하다.
System.out.println(System.getProperty("testkey1"));
2. 프로그램 내에서 System.setProperty 이용
프로그램내에서 함수를 이용해 set 하고 이용가능하다. 이용하는 방법은 1과 같다
//내부에서 프로퍼티 셋팅
System.setProperty("testkey2", "testvalue2");
//사용
System.out.println(System.getProperty("testkey2"));
3. 스프링에서 사용
스프링에서는 Config 파일에 PropertySource 를 이용해, 프로퍼티파일을 지정해 주고, 해당 컨텍스트에서
getEnvironment 함수를 이용해 환경변수 관련 클래스를 얻은후, 사용할수 있다.
ex)
3.1 src 폴더 바로밑에 test.properties 파일 생성하고,
내용을 아래와 같이 쓴다.
test.key1=value1
test.key2=value2
test.key3=value3
3.2 컨피그 파일을 생성한다.
com.samdogs.config.MainConfig.java 를 생성하고 아래와 같이 쓴다.
package com.samdogs.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:/test.properties")
public class MainConfig {
@Bean
public String testBean() {
return new String("HelloWorld");
}
}
3.3 컨텍스트를 생성하고, env 속성을 얻어 사용한다.
com.samdogs.test.TestEnvironment.java 를 생성하고 아래와 같이 쓴다.
package com.samdogs.test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.samdogs.config.MainConfig;
public class TestEnvironment {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);
ConfigurableEnvironment env = ctx.getEnvironment();
System.out.println(env.getProperty("java.version"));
System.out.println(env.getProperty("test.key2"));
}
}
끝.~
실행소스는 첨부합니다~!