[SPRING] 내 applicationContext에 PropertyPlaceHolderConfigurer를 여러 개 가질 수 있습니까?
SPRING내 applicationContext에 PropertyPlaceHolderConfigurer를 여러 개 가질 수 있습니까?
주어진 system 속성에 따라 특정 applicationContext.xml 파일을로드해야합니다. 이 자체는 실제 구성으로 파일을로드합니다. 따라서 2 개의 PropertyPlaceHolderConfigurer가 필요합니다. 하나는 System param을 해결하고 다른 하나는 실제 구성을 해결합니다.
어떤 아이디어가 이것을 어떻게?
해결법
-
==============================
1.예, 둘 이상을 할 수 있습니다. ignoreUnresolvablePlaceholders는 반드시 해결할 수없는 자리 표시자를 무시하도록 설정해야합니다.
예, 둘 이상을 할 수 있습니다. ignoreUnresolvablePlaceholders는 반드시 해결할 수없는 자리 표시자를 무시하도록 설정해야합니다.
<bean id="ppConfig1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreUnresolvablePlaceholders" value="true"/> <property name="locations"> <list> <value>classpath*:/my.properties</value> </list> </property> </bean> <bean id="ppConfig2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreUnresolvablePlaceholders" value="false"/> <property name="locations"> <list> <value>classpath*:/myOther.properties</value> </list> </property> </bean>
응용 프로그램에 따라 systemPropertiesMode를 조사해야합니다.이 옵션을 사용하면 파일에서 속성을로드 할 수 있지만 시스템 속성을 설정하면 속성 파일의 값을 재정의 할 수 있습니다.
-
==============================
2.여러 구성자와 관련된 버그가있을 수 있습니다. 자세한 내용은 http://jira.spring.io/browse/SPR-5719를 참조하십시오.
여러 구성자와 관련된 버그가있을 수 있습니다. 자세한 내용은 http://jira.spring.io/browse/SPR-5719를 참조하십시오.
나는 여러 곳에서 일할 수는 없지만 ... 그러나 나는 아직 누구도 탓하지 않고있다.
-
==============================
3.또 다른 해결책은 PropertyPlaceholderConfigurer의 placeholderPrefix 속성을 사용하는 것입니다. 두 번째 (셋째, 네 번째 ...) 구성자를 지정하고 모든 해당 자리 표시 자에 접두사를 붙이면 충돌이 발생하지 않습니다.
또 다른 해결책은 PropertyPlaceholderConfigurer의 placeholderPrefix 속성을 사용하는 것입니다. 두 번째 (셋째, 네 번째 ...) 구성자를 지정하고 모든 해당 자리 표시 자에 접두사를 붙이면 충돌이 발생하지 않습니다.
<bean id="mySecondConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="classpath:/myprops.properties" p:placeholderPrefix="myprefix-"/> <bean class="com.mycompany.MyClass" p:myprop="${myprefix-value.from.myprops}"/>
-
==============================
4.직접 할 수는 없으며, Spring의 JIRA 이슈에 대한 이유를 설명합니다 (자세한 설명은 Chris Beams의 설명을 확인하십시오).
직접 할 수는 없으며, Spring의 JIRA 이슈에 대한 이유를 설명합니다 (자세한 설명은 Chris Beams의 설명을 확인하십시오).
https://jira.springsource.org/browse/SPR-6428
그러나 Spring 3.1 이상을 사용하는 해결 방법을 제공합니다.이 해결 방법은 PropertyPlaceholderConfigurer 클래스 대신 PropertySourcesPlaceholderConfigurer 클래스를 사용하는 것입니다.
문제를 보여주는 Maven 기반 프로젝트를 다운로드 할 수 있으며, Spring 프레임 워크에서 github 문제를 해결할 수있다.
https://github.com/SpringSource/spring-framework-issues
다운로드 한 프로젝트에서 문제 번호 SPR-6428을 찾으십시오.
-
==============================
5.내 측면에서는 PropertyPlaceholderConfigurer 두 가지 속성을 가지고 놀고 있습니다.
내 측면에서는 PropertyPlaceholderConfigurer 두 가지 속성을 가지고 놀고 있습니다.
완벽하게 작동합니다.
희망이 도움이된다.
-
==============================
6.우리는 다음과 같은 접근 방식을 사용합니다.
우리는 다음과 같은 접근 방식을 사용합니다.
<util:properties id="defaultProperties"> <prop key="stand.name">DEV</prop> <prop key="host">localhost</prop> </util:properties> <context:property-placeholder location="file:${app.properties.path:app.properties}" properties-ref="defaultProperties"/>
시스템 속성 app.properties.path를 사용하여 구성 파일의 경로를 무시할 수 있습니다.
또한 응용 프로그램은 공통 모듈에서 기본값으로 정의 할 수없는 자리 표시 자의 일부 기본값을 묶습니다.
-
==============================
7.저에게 맞는 2 개의 고유 한 ID를 제공하면됩니다. 나는 봄 3.0.4를 사용하고있다.
저에게 맞는 2 개의 고유 한 ID를 제공하면됩니다. 나는 봄 3.0.4를 사용하고있다.
희망이 도움이됩니다.
-
==============================
8.경우에 따라 두 개의 PPC를 정의하고 (독립적으로 사용해야합니다.) placeholderPrefix 속성을 설정하여 원하는 PPC에서 값을 검색 할 수 있습니다. 이것은 두 PPC의 속성 집합이 같은 키를 가지고있을 때 유용 할 것이고, 이것을 사용하지 않으면 ppc2의 속성이 ppc1을 무시할 것입니다.
경우에 따라 두 개의 PPC를 정의하고 (독립적으로 사용해야합니다.) placeholderPrefix 속성을 설정하여 원하는 PPC에서 값을 검색 할 수 있습니다. 이것은 두 PPC의 속성 집합이 같은 키를 가지고있을 때 유용 할 것이고, 이것을 사용하지 않으면 ppc2의 속성이 ppc1을 무시할 것입니다.
XML 정의하기 :
<bean name="ppc1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="properties" ref="ref to your props1" /> <property name="placeholderPrefix" value="$prefix1-{" /> </bean> <bean name="ppc2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="properties" ref="ref to your props2" /> <property name="placeholderPrefix" value="$prefix2-{" /> </bean>
런타임 중 검색 중 :
@Value(value = "$prefix1-{name}") private String myPropValue1; @Value(value = "$prefix2-{name}") private String myPropValue2;
from https://stackoverflow.com/questions/686635/is-it-possible-to-have-multiple-propertyplaceholderconfigurer-in-my-applicationc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부분 업데이트 개체 데이터 바인딩 (0) | 2018.12.17 |
---|---|
[SPRING] 서블릿으로의 스프링 주입 (0) | 2018.12.17 |
[SPRING] Spring autowiring에서 서브 패키지를 제외 하시겠습니까? (0) | 2018.12.17 |
[SPRING] 액세스 토큰을 발급 할 때 사용자 정보를 포함 할 수 있습니까? (0) | 2018.12.17 |
[SPRING] TaskExecutor 예제를 사용한 좋은 스프링 스레딩? [닫은] (0) | 2018.12.17 |