어플리케이션을 작성할 때 property 파일만 수정하고 어플리케이션을 재시작 하지 않고
해당 사항이 반영 되길 원하는 경우가 있다. 최대한 부하가 생기지 않고
이런 일을 처리 할 수 있는 로직을 아래와 같이 작성해 본다.
=================================
package com.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class PropertyUtil {
private static PropertyUtil propertyUtil = new PropertyUtil();
private static Properties propObj = null;
private static File propFile = null;
private static FileInputStream propStream = null;
private static long propLastModified = 0L;
/**
* 작성자 : 정윤재
* 파라미터 : property 파일 안에 정의 된 property 개별 항목의 이름
* return type : value
* 사용법 : 파라미터로 cms.password 이런식으로 질의함 (property 파일 안에는 cms.password=1234 이런식으로 정의 됨)
*/
public static String getProperty(String propName){
long lastModified = propFile.lastModified();
if(propLastModified < lastModified){
try{
propLastModified = propFile.lastModified();
propStream = new FileInputStream(propFile);
propObj.load(propStream);
propStream.close();
}catch(FileNotFoundException fnfe){
fnfe.printStackTrace();
}catch(IOException ioe){
ioe.printStackTrace();
}
}//if
return propObj.getProperty(propName);
}//getProperty
/**
* 작성자 : 정윤재
* 파라미터 : property file 의 절대 경로
* return type : PropertyUtil
* 사용법 : 싱글턴을 변형시켜서 만든 것이므로 객체 생성 할 때 new 로 만들지 말고 getInstance를 사용하여 만들어야 함
*/
public static PropertyUtil getInstance(String propertyUrl){
if(propObj == null){
propObj = new Properties();
try{
propFile = new File(propertyUrl);
propLastModified = propFile.lastModified();
propStream = new FileInputStream(propFile);
propObj.load(propStream);
propStream.close();
}catch(FileNotFoundException fnfe){
fnfe.printStackTrace();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
return propertyUtil;
}
}
'JAVA' 카테고리의 다른 글
[ JAVA ] Linux 에서 java 로 local ip 알아 내기 (0) | 2013.06.01 |
---|---|
[ JAVA ] 배열 (array) 을 List 형태로 변경 하기 (0) | 2013.06.01 |
[ JAVA ] 동적으로 class , method 실행 시킬 수 있는 reflection 사용법 (0) | 2013.05.19 |
[ JAVA ] 자주 쓰는 Collection API 정리 (0) | 2013.05.19 |
[ JAVA ] System.getProperty("file.encoding") 변경 방법 (0) | 2013.03.12 |
댓글