[SPRING] Spring에로드 된 Props 파일의 속성에 대해 후행 공백을 자동으로 자릅니다.
SPRINGSpring에로드 된 Props 파일의 속성에 대해 후행 공백을 자동으로 자릅니다.
PropertiesFactoryBean을 사용하여 일반적인 Properties 파일에서 속성을로드합니다. 어쨌든 스프링이 자동적으로 뒷좌석 공백을 프롭 값에서 제거하도록할까요?
해결법
-
==============================
1.사용자 정의 PropertiesPersister를 PropertiesFactoryBean 구성에 전달하여 특성로드 기능을 사용자 정의 할 수 있습니다. PropertiesPersister 인스턴스는 PropertiesFactoryBean에 의해 사용되어 Properties 파일 데이터를 구문 분석합니다. 디폴트 구현은 java.util.Properties의 네이티브 구문 분석을 따릅니다. PropertiesPersister 인터페이스를 직접 구현하여 파싱 논리를 사용자 정의 할 수 있습니다.
사용자 정의 PropertiesPersister를 PropertiesFactoryBean 구성에 전달하여 특성로드 기능을 사용자 정의 할 수 있습니다. PropertiesPersister 인스턴스는 PropertiesFactoryBean에 의해 사용되어 Properties 파일 데이터를 구문 분석합니다. 디폴트 구현은 java.util.Properties의 네이티브 구문 분석을 따릅니다. PropertiesPersister 인터페이스를 직접 구현하여 파싱 논리를 사용자 정의 할 수 있습니다.
-
==============================
2.Chad가 말한 것처럼, Spring은 버전 4.3RC1로이 문제를 해결했습니다. 하지만 trimValues 매개 변수를 사용하여 트림 기능을 수동으로 설정해야합니다 (기본값 : "false").
Chad가 말한 것처럼, Spring은 버전 4.3RC1로이 문제를 해결했습니다. 하지만 trimValues 매개 변수를 사용하여 트림 기능을 수동으로 설정해야합니다 (기본값 : "false").
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="trimValues" value="true"/> <property name="locations"> <list> ... </list> </property>
이에 대한 문서를 찾지 못했지만 스프링 API에서 추론합니다.
-
==============================
3.자신의 속성 구성자를 정의 할 수 있습니다.
자신의 속성 구성자를 정의 할 수 있습니다.
package your.company.package; public class TrimPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { @Override protected String resolvePlaceholder( String placeholder, Properties props ) { String value = super.resolvePlaceholder( placeholder, props ); return (value != null ? value.trim() : null ); } }
그런 다음 bean_config.xml에 정의해야합니다.
<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="location" value="classpath:main.properties" /> </bean> <bean id="trimPropertyPlaceholderConfigurer" class="your.company.package.TrimPropertyPlaceholderConfigurer"> <property name="properties" ref="applicationProperties" /> </bean>
@Value 주석을 사용하여 필드에 속성을 설정하는 경우 다른 방법은 다음과 같습니다.
@Value( value = "#{applicationProperties['my.app.property'].trim()}" )
속성이 파일에 없으면 NullPointerException이 throw됩니다.
-
==============================
4.최신 Spring 버전 (4.3 이상)에서는 구성에 PropertySourcesPlaceholderConfigurer bean을 만들 때 setTrimValues ()를 true로 호출하면됩니다. 그러면 속성 파일에서 얻은 값에서 추가 또는 공백이 제거됩니다.
최신 Spring 버전 (4.3 이상)에서는 구성에 PropertySourcesPlaceholderConfigurer bean을 만들 때 setTrimValues ()를 true로 호출하면됩니다. 그러면 속성 파일에서 얻은 값에서 추가 또는 공백이 제거됩니다.
from https://stackoverflow.com/questions/7031905/automatically-trim-trailing-white-space-for-properties-in-props-file-loaded-into by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Jboss No Spring WebApplicationInitializer 유형이 클래스 경로에서 감지되었습니다. (0) | 2019.05.19 |
---|---|
[SPRING] grails에서 일대 다 관계를위한 동적 폼의 매개 변수 처리 (0) | 2019.05.19 |
[SPRING] Spring aspect를 이용한 컴파일 타임 코드 계측을위한 Ant 타겟 (0) | 2019.05.19 |
[SPRING] 일반 인터페이스에서 작동하지 않는 Pointcut (0) | 2019.05.19 |
[SPRING] 클러스터 환경에서의 스프링 배치 - Websphere (0) | 2019.05.19 |