복붙노트

[SPRING] 다른 속성의 속성 - 자리 표시 자 위치

SPRING

다른 속성의 속성 - 자리 표시 자 위치

프로그램이 실행될 때까지 모르는 위치에서 Spring 컨텍스트로 일부 속성을로드해야합니다.

그래서 위치가없는 PropertyPlaceholderConfigurer가 있으면 시스템 등록 정보에서 my.location을 읽었을 것이고 컨텍스트에서 그 위치를 사용할 수 있다고 생각했습니다. property-placeholder

이처럼

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>    
<context:property-placeholder location="${my.location}"/>

하지만 이것은 작동하지 않으며 location = "classpath : $ {my.location}"도 마찬가지입니다.

해결법

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

    1.문제는 여기에 속성 자리 표시 자 구문을 사용하여 속성 자리 표시자를 구성하려고한다는 것입니다. 약간의 닭고기 및 계란 상황입니다. 봄은 $ {my.location} 자리 표시자를 구성 할 때까지이를 해결할 수 없습니다. 속성 자리 표시 자.

    문제는 여기에 속성 자리 표시 자 구문을 사용하여 속성 자리 표시자를 구성하려고한다는 것입니다. 약간의 닭고기 및 계란 상황입니다. 봄은 $ {my.location} 자리 표시자를 구성 할 때까지이를 해결할 수 없습니다. 속성 자리 표시 자.

    이것은 만족스럽지 않지만 좀 더 명확한 구문을 사용하여 문제를 해결할 수 있습니다.

    <bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
       <property name="location">
          <bean class="java.lang.System" factory-method="getenv">
             <constructor-arg value="my.location"/>
          </bean>
       </property>
    </bean>
    
  2. ==============================

    2.약간 다른 접근 방식으로이 작업을 수행 할 수 있습니다. 여기에 우리가 어떻게 구성되어 있습니다. 기본 속성을로드 한 다음 구성 가능한 위치의 속성으로 덮어 씁니다. 이것은 나를 위해 아주 잘 작동합니다.

    약간 다른 접근 방식으로이 작업을 수행 할 수 있습니다. 여기에 우리가 어떻게 구성되어 있습니다. 기본 속성을로드 한 다음 구성 가능한 위치의 속성으로 덮어 씁니다. 이것은 나를 위해 아주 잘 작동합니다.

    <bean id="propertyPlaceholderConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
            <property name="locations">
                <list>
                    <value>classpath:site/properties/default/placeholder.properties
                    </value>
                    <value>classpath:site/properties/${env.name}/placeholder.properties
                    </value>
                </list>
            </property>
        </bean>
    
  3. from https://stackoverflow.com/questions/1311360/property-placeholder-location-from-another-property by cc-by-sa and MIT license