Language/JAVA

[Apache Commons]Configuration

적외선 2014. 11. 11. 16:37

http://commons.apache.org/configuration/

연구실에서 프로젝트를 할 때, DB 계정 정보 등의 설정 정보 등을 XML파일로 적어놓고 참조하려고 마음을 먹었습니다. 그래서  XML파일 읽는 코드를 한 20줄 짜고, 이 설정 정보를 java.util.Properties 에 저장하여 메모리에 유지하도록 static 하게 변수를 선언하는 등의 작업을 하였으나, 검색해보니 Apache Commons 프로젝트에 Configuration 이라는 컴포넌트가 있습니다.

구글에서 검색하니 http://twit88.com/blog/2007/09/18/xml-configuration-for-java-program/  에도 간단한 예가 나와있습니다. 어쨌든, http://commons.apache.org/configuration/userguide/user_guide.html 를 보시면 이 컴포넌트의 사용방법이 자세하게 기술되어 있습니다. 그리고 User guide의 Hierarchical Properties 항목을 보면, XML파일을 이용하는 방법이 기술되어 있습니다. 


간단히 따라해보았습니다.
먼저 conf.xml 라는 이름의 xml 설정파일을 만들었습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <database>
        <server>
            <type>PostgreSQL</type>
            <host>localhost</host>
            <port>5432</port>
        </server>
        <user>               
            <name>coinus</name>
            <password>1124</password>
        </user>
        <database>
            <name>coinus</name>
            <charset>UTF8</charset>
        </database>
    </database>      
</config>
다음은 XMLConfiguration 를 사용해서 XML파일을 읽는 간단한 예제입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package kr.ac.uos.dmlab.config;
 
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
 
public class ConfigLoader {
     
    private static XMLConfiguration load(String file) {
        XMLConfiguration conf= null;
        try {
            conf= new XMLConfiguration("conf/conf.xml");
             
            System.out.println(conf.getString("database.server.type"));
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
        return conf;
    }
     
    public static void main(String[] args) {
        load("conf/conf.xml");
    }
     
}
load()  메소드 중간에 root element인 config 밑의 database 밑의 server 밑의 'type' element의 문자열 값을 가져와서 출력하는 코드가 13 line에 있습니다. 이렇게 element의 value를 문자열이나 정수형 등으로 가져올 수 있습니다. 물론 attribute도 사용할 수 있습니다. 자세한 내용은 User Guide의 Hierarchical Properties 를 참조해주세요. ^^;;

아 그리고 Configuration 컴포넌트의 코드에서 Commons의 다른 컴포넌트들, lang, collections, logging 등이 사용됩니다. 모두 다운 받아서 추가해주어야 합니다. 현재로서는 많은 기능이 필요한 것은 아니지만, 머 훌륭한 코드들일테니 배워두어서 나쁠리 없겠죠.




출처 - http://thebasis.tistory.com/94