복붙노트

[SPRING] Spring에서 같은 키를 가진 여러 속성을 읽는 방법?

SPRING

Spring에서 같은 키를 가진 여러 속성을 읽는 방법?

나는 여기서 간단한 문제에 직면하고있다. 두 개의 데이터 소스를 만들기 위해 읽으려는 두 개의 특성 파일이 있습니다. 그러나 이러한 등록 정보 파일에는 정확히 동일한 키가 있습니다! 내가 사용하는 두 파일을 읽을 수 있어요 :

<context:property-placeholder 
    location="classpath:foo1.properties,classpath:foo2.properties"/>

그러나 그 때 나는 적당한 가치에 접근 할 수 없다 :

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${driver}" /> <!-- Which one? -->
    <property name="url" value="${url}" />                <!-- Which one? -->
    ...
</bean>

$ {foo1.driver}와 같은 변수를 사용할 수 있도록 속성을 읽으면 어떤 것을 호출 할 수 있는지 어떻게 알 수 있습니까?

도움 감사합니다!

해결법

  1. ==============================

    1.다음과 같이 시도해보십시오 (테스트하지 않음).

    다음과 같이 시도해보십시오 (테스트하지 않음).

    <bean id="config1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="ignoreUnresolvablePlaceholders" value="true"/>
           <property name="placeholderPrefix" value="${foo1."/>
           <property name="locations">
            <list>
              <value>classpath:foo1.properties</value>
            </list>
          </property>
        </bean>
    
        <bean id="config2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="ignoreUnresolvablePlaceholders" value="false"/>
           <property name="placeholderPrefix" value="${foo2."/>
           <property name="locations">
            <list>
              <value>classpath:foo2.properties</value>
            </list>
          </property>
        </bean>
    
  2. ==============================

    2.나는 PropertyPlaceHolderConfigurer를 확장 할 것이라고 생각한다.

    나는 PropertyPlaceHolderConfigurer를 확장 할 것이라고 생각한다.

    내게는 PropertiesLoaderSupport.loadProperties (Properties) 메서드를 재정의해야하는 것처럼 보입니다.

    내가 할 수있는 것은 "접두사"속성을 추가하는 것입니다.

    public void setPrefixes(List<String> prefixes){
        this.prefixes = prefixes;
    }
    

    그리고 Properties 리소스를 읽는 동안이 접두어를 반복합니다.

  3. from https://stackoverflow.com/questions/10433186/how-to-read-multiple-properties-having-the-same-keys-in-spring by cc-by-sa and MIT license