티스토리 뷰


Apache Commons Project 에 존재하는 Configuration Package 를 알게 되어 사용해본 결과 상당히 유용한 라이브러리임은 분명하나 상황에 따라 원치않는 결과를 초래하기도 했습니다.

우선 configuration package를 사용하기 위해서는 collections, lang, logging Package를 함께 설치해야 합니다.
2009년 12월 현재 가장 최신버전을 다운 받았습니다.

- Commons Project Site : http://commons.apache.org/

귀찮은 경우 이걸 다운받아 사용해도 무방합니다.
4개 모두 다운받아 사용해야 하며, configuration 패키지는 commons-configuration-1.6.jar 에 포함되어 있습니다.


[사용방법]

우선 샘플로 작성된 XML Config 를 보시죠.



	
		2.0
		utf-8
		/home/exporter/log
		/home/exporter/work
		/home/exporter/cache
	


Root Element 는 "modules" 이며 그 하위에 설정 내용이 존재합니다.

아래는 XMLConfiguration을 통해 위 샘플 Configuration을 읽어들여 출력하는 Java Code 입니다.

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

public class ConfigTest {

	public static void main(String[] args) {
		XMLConfiguration config;
		try {
			config = new XMLConfiguration("D:\\download\\configuration.xml");
			config.setDelimiterParsingDisabled(false);
			config.load();
			
			String basePath = config.getBasePath();
			debug("Base Path", basePath);
			
			String version = config.getString("exporter-config.version");
			debug("Version", version);
			
			String charset = config.getString("exporter-config.charset");
			debug("CharacterSet", charset);
			
			String logging = config.getString("exporter-config.logging");
			debug("Logging", logging);
			
			String work = config.getString("exporter-config.work");
			debug("Work", work);
			
			String cacheFile = config.getString("exporter-config.cache-file");
			debug("Cache File", cacheFile);
		} catch(ConfigurationException e) {
			e.printStackTrace();
		}
	}
	
	public static void debug(String prefix, String value) {
		System.out.println("- " + prefix + " : " + value);
	}
}

우선 XMLConfiguration 의 인스턴스를 생성하면서 로드 하고자 하는 XML 파일의 경로를 인자값으로 넘깁니다.
이 과정에서 ConfigurationException 이 발생하므로 try-catch 문으로 Exception 처리를 해주어야 합니다.

String version = config.getString("exporter-config.version");

소스코드에 있는 위 라인에 대해 간단히 설명 하자면, 샘플 XML Config 에서 version 노드에 설정된 정보를 가져와 String 변수에 저장을 하는 로직입니다. 한눈에 봐도 알 수 있듯이 Node 탐색 방법이 아주 심플하면서도 직관적이죠. '.' 으로 연결되는 부모-자식간 노드 경로를 표현하여 쉽게 접근이 가능하겠습니다.

위 소스코드를 실행하면 다음과 같은 결과가 출력됩니다.

- Base Path : file:/D:/download/configuration.xml
- Version : 2.0
- CharacterSet : utf-8
- Logging : /home/exporter/log
- Work : /home/exporter/work
- Cache File : /home/exporter/cache

기타 다른 부분에 대해서는 Apache 사이트에 샘플 코드로 설명이 되어 있으므로 참고하면 도움이 될 듯 싶습니다.
(비록 영어이긴 하지만 코드만 봐도 이해가 갈 정도로 어려운 난이도는 아닌 것 같습니다.)

공지사항