[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.첫 번째 질문의 경우 다음 구문을 사용하여 자리 표시 자의 기본값을 설정할 수 있습니다. 여기서 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.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.Spring 3에서는 $ {someProperty : defaultValue}를 사용할 수 있습니다. 1.1.5를 사용하지 않기를 바랍니다.
Spring 3에서는 $ {someProperty : defaultValue}를 사용할 수 있습니다. 1.1.5를 사용하지 않기를 바랍니다.
-
==============================
4.Javadoc에 따르면 PropertyPlaceholderConfigurer를 사용할 때 "자리 표시 자 속성 파일에는 정의 된 각 자리 표시 자에 대한 항목이 포함되어 있어야합니다."
Javadoc에 따르면 PropertyPlaceholderConfigurer를 사용할 때 "자리 표시 자 속성 파일에는 정의 된 각 자리 표시 자에 대한 항목이 포함되어 있어야합니다."
그러나 PropertyPlaceholderConfigurer에 대해 여러 위치 (속성 파일)를 제공하고 그 중 하나를 기본값으로 사용할 수 있습니다. 그렇게하면 필요한 기본값을 항상 확보 할 수 있습니다.
정의되지 않은 속성이 사용될 때 응용 프로그램이 예외를 throw하도록하려면 PropertyPlaceholderConfigurer에서 "ignoreUnresolvablePlaceholders"가 false로 설정되어 있는지 확인하십시오.
from https://stackoverflow.com/questions/8214862/propertyplaceholder-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @Cacheable 주석을 사용하여 스프링 빈을 키로 사용하기 (0) | 2019.04.02 |
---|---|
[SPRING] 스프링 부트 액추에이터 엔드 포인트의 JSON 출력을 멋지게 출력 (0) | 2019.04.02 |
[SPRING] Spring Boot - Hibernate 커스텀 제약이 서비스를 삽입하지 않는다. (0) | 2019.04.02 |
[SPRING] spring-boot-starter-tomcat 대 spring-boot-starter-web (0) | 2019.04.02 |
[SPRING] Spring MVC Thymeleaf 바인딩 체크 박스가있는 목록 (0) | 2019.04.02 |