[SPRING] 런타임시 스프링 웹 애플리케이션의 특성 파일 겹쳐 쓰기
SPRING런타임시 스프링 웹 애플리케이션의 특성 파일 겹쳐 쓰기
아래의 PropertyPlaceholderConfigurer를 사용하여 스프링 웹 애플리케이션에 특성 파일을로드하고있다.
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:db.properties</value>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
이제 mail.properties의 일부 속성을 덮어 쓰고 싶습니다. 따라서 다음과 같이이 게시물을 읽은 응용 프로그램 컨텍스트 파일에 추가 항목을 만들었습니다.
<context:property-placeholder location="file:override.properties"
order="-1" ignore-unresolvable="true" ignore-resource-not-found="true" />
그런 다음 Tomcat Server에서 실행 구성의 VM 인수에서 추가 항목을 제공했습니다.
-Dexternal.props = "/ Users / ArpitAggarwal / Desktop / override.properties"
재정의해야하는 일부 키에 대한 재정의 된 값이 있습니다.
그러나 WebApp는 override.properties에서 값을 선택하지 않습니다. 아무도 나를 알아내는 데 도움이 될 수 있습니까?
어떤 도움을 주시면 감사하겠습니다. 감사!
해결법
-
==============================
1.내가 문제를 해결하기 위해 수행 한 작업은 $ {ext.properties.dir : classpath :} / override.properties와 같은 위치 속성을 다음과 같이 바꾼 것입니다.
내가 문제를 해결하기 위해 수행 한 작업은 $ {ext.properties.dir : classpath :} / override.properties와 같은 위치 속성을 다음과 같이 바꾼 것입니다.
<context:property-placeholder location="${ext.properties.dir:classpath:}/override.properties" order="-1" ignore-unresolvable="true" ignore-resource-not-found="true" />
그리고 application-server / jvm에서 ext.properties.dir 값을 다음과 같이 제공했습니다 :
-Dext.properties.dir=file:/Users/ArpitAggarwal/properties/
참고 자료 : spring을 가지고있는 6 가지 팁 - 관리 - 속성 - 파일들.
-
==============================
2.여러 속성 자리 표시 자와 작업하는 것은 goog 아이디어가 아니라고 생각합니다. 두 개의 XML 구성이 동일한 컨텍스트에서 각 속성을로드하고 교차 사용하려고하면 많은 문제가있었습니다.
여러 속성 자리 표시 자와 작업하는 것은 goog 아이디어가 아니라고 생각합니다. 두 개의 XML 구성이 동일한 컨텍스트에서 각 속성을로드하고 교차 사용하려고하면 많은 문제가있었습니다.
속성 파일을 외부화하려는 경우 JNDI 속성을 제안합니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:db.properties</value> <value>classpath:mail.properties</value> <value>${java:com/env/myApp/externalProperties} </list> </property> </bean>
이 JNDI의 값은 "file : / path-to-propertiesFile"입니다.
이렇게하면 propertyePlaceholder가 하나만 필요합니다. 또한 외부 파일을 마지막 위치로두면 중복 된 키가 있으면 스프링이 마지막 키만 유지합니다.
-
==============================
3.응용 프로그램 컨텍스트에서 사용하면됩니다.
응용 프로그램 컨텍스트에서 사용하면됩니다.
<context:property-placeholder location="file:///${external.props}" order="-1" ignore-unresolvable="true" ignore-resource-not-found="true" />
문제는 방금 잘못 사용 된 위치입니다, 실제 위치는 VM arg 변수입니다 key => $ {external.props}
from https://stackoverflow.com/questions/33184807/override-properties-file-in-spring-webapp-at-runtime by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JSP 페이지 인코딩 문제 (0) | 2019.02.27 |
---|---|
[SPRING] ClassNotFoundException : javax.validation.ValidatorFactory (0) | 2019.02.27 |
[SPRING] BeanPropertyRowMapper에서 속성에 대한 변환기 등록 (0) | 2019.02.27 |
[SPRING] 주석 기반의 트랜잭션 관리와 객체 매핑을위한 Spring 3의 최소 Hibernate 4 XML 설정? (0) | 2019.02.27 |
[SPRING] 스프링에서의 동적 인 생성 (0) | 2019.02.27 |