복붙노트

[SPRING] 봄의 PropertyPlaceHolder

SPRING

봄의 PropertyPlaceHolder

다음과 같이 봄에 java 속성에 액세스합니다.

<property name="fileSizeLimit" value="${someProperty}" />

콩이 선언하다.

int fileSizeLimit = 9999;

속성 파일에 "someProperty"가없는 경우 어떻게 기본값을 설정할 수 있습니까?

우리는 봄에 int-setter를 "someProperty"속성의 이름으로 호출하기 때문에 NumberFormatException을 얻는다. 속성이 설정되면 모든 것이 올바르게 작동합니다.

http://static.springsource.org/spring/docs/1.1.5/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html 메시지 :

이것은 속성을 조회하는 순서를 설정합니까? 어디서 구성합니까?

TIA, Bastl.

해결법

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

    1.첫 번째 질문의 경우 다음 구문을 사용하여 자리 표시 자의 기본값을 설정할 수 있습니다. 여기서 9999가 기본값입니다.

    첫 번째 질문의 경우 다음 구문을 사용하여 자리 표시 자의 기본값을 설정할 수 있습니다. 여기서 9999가 기본값입니다.

    <property name="fileSizeLimit" value="${someProperty:9999}" />
    

    두 번째 질문의 경우 systemPropertiesModeName 속성은 속성이 처리되는 순서와 속성 파일 대 시스템 속성을 결정합니다. 예를 들어,

    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    

    PropertyPlaceholderConfigurer에게 프로퍼티 파일 앞의 시스템 프로퍼티를 보도록 지시합니다.

    systemPropertiesModeName의 값은 다음과 같습니다.

    SYSTEM_PROPERTIES_MODE_FALLBACK (default)
          Check system properties if not resolvable in the specified properties.
    SYSTEM_PROPERTIES_MODE_NEVER 
          Never check system properties.
    SYSTEM_PROPERTIES_MODE_OVERRIDE 
          Check system properties first, before trying the specified properties.
    

    보통 내 자리 표시 자에서 SYSTEM_PROPERTIES_MODE_OVERRIDE 및 기본값을 사용하므로 순서가

  2. ==============================

    2.xml 파일의 bean 정의에서 PropertyPlaceHolder의 기본값을 정의 할 수 있습니다.

    xml 파일의 bean 정의에서 PropertyPlaceHolder의 기본값을 정의 할 수 있습니다.

    <bean 
       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
       id="corePlaceHolder">
                <property name="ignoreUnresolvablePlaceholders" value="true"/>
                <property name="systemPropertiesModeName" 
                             value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
                <property name="searchSystemEnvironment" value="true"/>
                <property name="locations">
                <list>
                    <value>classpath*:config/*/......./*.properties</value>
                </list>
                </property>
                <property name="properties">  
                  <props>  
                   <prop key="fileSizeLimit">123</prop>  
                  </props>  
                </property>  
    </bean> 
    

    자세한 내용은 http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html을 참조하십시오.

  3. ==============================

    3.Spring 3에서는 $ {someProperty : defaultValue}를 사용할 수 있습니다. 1.1.5를 사용하지 않기를 바랍니다.

    Spring 3에서는 $ {someProperty : defaultValue}를 사용할 수 있습니다. 1.1.5를 사용하지 않기를 바랍니다.

  4. ==============================

    4.Javadoc에 따르면 PropertyPlaceholderConfigurer를 사용할 때 "자리 표시 자 속성 파일에는 정의 된 각 자리 표시 자에 대한 항목이 포함되어 있어야합니다."

    Javadoc에 따르면 PropertyPlaceholderConfigurer를 사용할 때 "자리 표시 자 속성 파일에는 정의 된 각 자리 표시 자에 대한 항목이 포함되어 있어야합니다."

    그러나 PropertyPlaceholderConfigurer에 대해 여러 위치 (속성 파일)를 제공하고 그 중 하나를 기본값으로 사용할 수 있습니다. 그렇게하면 필요한 기본값을 항상 확보 할 수 있습니다.

    정의되지 않은 속성이 사용될 때 응용 프로그램이 예외를 throw하도록하려면 PropertyPlaceholderConfigurer에서 "ignoreUnresolvablePlaceholders"가 false로 설정되어 있는지 확인하십시오.

  5. from https://stackoverflow.com/questions/8214862/propertyplaceholder-in-spring by cc-by-sa and MIT license