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&
useUnicode=true&characterEncoding=euckr
&mysqlEncoding=euckr</connlist>
<connlist>jdbc:oracle:thin:@host03-pri:1521:host03</connlist>
</connlists>
</config>
4. 실행 결과값








