apache common configuration spring에 통합하기

spring 2009. 3. 23. 13:59
apache common프로젝트 하위에 xml을 통해서 설정을 간단히 처리 할 수 있는
configuration 모듈을 제공하고 있다.
이를 spring에 통합하여 사용하는 방법을 소개한다.

-- 사전준비 --
1. apache common configuration다운로드
   -사이트참조

2. springmodules다운로드
    - 사이트참조

3. spring모듈
    - 별도의 설명은 하지 않음.

1. spring context파일에 PlaceholderConfigurer 선언
    <bean class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="properties">
            <bean class="org.springmodules.commons.configuration.CommonsConfigurationFactoryBean">
                <property name="configurations">
                    <list>
                        <ref bean="configuration" />
                    </list>
                </property>
            </bean>
        </property>
    </bean>
2. springmodules를 이용하여 apache common configuration 설정파일 로드하는 Bean설정
   (주의사항, 특정 configuration xml파일에서 <xml fileName="" />을 사용하는경우
    spring context파일에서 해당 설정값을 ${common.targetElement} 형식으로 사용하지 못한다.
    각각의 xml파일을 load하도록 선언에 명시해줘야함.)
    <bean id="configuration" class="org.apache.commons.configuration.CompositeConfiguration">
        <constructor-arg>
            <list>       
                <!-- [S] 실서버 환경 설정 -->
                <bean class="org.apache.commons.configuration.XMLConfiguration">
                    <constructor-arg type="java.lang.String">
                        <value>../config/common/config-core.xml</value>
                    </constructor-arg>               
                </bean>               
                <bean class="org.apache.commons.configuration.XMLConfiguration">
                    <constructor-arg type="java.lang.String">
                        <value>../config/common/config-opt.xml</value>
                    </constructor-arg>               
                </bean>
                <!-- [E] 실서버 환경 설정 -->
            </list>
        </constructor-arg>
    </bean>
3. 설정사용
   2번에서 config-core.xml은 다은과 같이 선언되어 있음.
<configuration>
    <database>
        <driver></driver>
        <url></url>
        <username></username>
        <password></password>
        <init-size></init-size>
        <max-size></init-size>
    </database>
</configuration>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${database.driver}"/>
        <property name="url" value="${database.url}"/>
        <property name="username" value="${database.username}"/>
        <property name="password" value="${database.password}"/>
        <property name="initialSize" value="${database.init-size}"/>
        <property name="maxActive" value="${database.max-size}"/>
    </bean>

4. 주의사항
- apache configuration 최신버전 사용 권장
  (각각의 version을 전부 확인하지 못했으나, 1.0버전에선 CompositeConfiguration 클래스의 생성자중 Collection Configuration 을 argumement로 하는 생성자가 없어 에러발생함.

            - 설정xml파일의 위치는 spring context파일이 위치하고 있는 경로에서 상대경로로 접근.

설정

트랙백

댓글