<< 2007년 11월 19일 (월) | | 2007년 11월 21일 (수) >>

XML 설정 화일 자동 로딩 방법

XML 파일 자동 로딩과 설정 파일 읽어오기 위해서 Commons Configuration v 1.4 라이브러리를 활용한 쉽게 설정파일을 읽을 수 있도록 해 줍니다.
설정파일을 유용하게 사용하는데 많은 도움을 받은 패키지입니다.

1. 필요한 라이브러리
 - commons-lang-2.3.jar, commons-configuration-1.4.jar, commons-collections-3.2.jar, commons-logging-1.0.4.jar

2.  사용 예제

import java.util.Collection;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;

public class Config extends XMLConfiguration
{
/**
*
*/
private static final long serialVersionUID = 1L;
private static Config instance_ = null;
private FileChangedReloadingStrategy strategy = null;

private Config(String fileName)
{
try {
init(fileName);
strategy = new FileChangedReloadingStrategy();
strategy.setRefreshDelay(100000);// Refresh 주기
setReloadingStrategy(strategy);
} catch (Exception e) {
e.printStackTrace();
}
}

public final static Config instance(String fileName)
{
if (instance_ == null) {
synchronized (Config.class) {
if (instance_ == null)
instance_ = new Config(fileName);
}
}
return instance_;
}

/**
* Initialize the class.
*
* @param fileName Configuration file name.
* @throws ConfigurationException
*/
private void init(String fileName) throws Exception {
setFileName(fileName);
try {
load();
} catch (Throwable e) {
e.printStackTrace();
}
}

public static void main(String args[]) {
Config appConfig = null;
try {
appConfig = Config.instance("D:\\temp\\config.xml");
System.out.println(appConfig.getString("database.user-name"));
System.out.println(appConfig.getString("database.password"));
Object obj = appConfig.getProperty("connlists.connlist");
if (obj instanceof Collection) {
int size = ((Collection) obj).size();
for (int i = 0; i < size; i++) {
System.out.println(appConfig.getProperty
("connlists.connlist(" + i + ")"));
}
} else if (obj instanceof String) {
System.out.println(appConfig.getProperty("connlists.connlist"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


3. 설정 화일

<?xml version="1.0" encoding="ISO-8859-1" ?>
<config>
    <database>
        <user-name>scott</user-name>
        <password>tiger</password>
    </database>

 

    <connlists>
        <connlist>jdbc:oracle:thin:@host01-pri:1521:host01</connlist>
        <connlist>jdbc:mysql://host02:3306/tvhair?autoReconnect=true&amp;
useUnicode=true&amp;characterEncoding=euckr
&amp;mysqlEncoding=euckr</connlist>
        <connlist>jdbc:oracle:thin:@host03-pri:1521:host03</connlist>
    </connlists>
</config>

4. 실행 결과값

XML

 

태그 :