응용 프로그램 컨텍스트에 여러 PropertyPlaceHolderConfigurer를 둘 수 있습니까?
특정 항목을 로드해야 합니다.applicationContext.xml
지정된 시스템 속성에 따라 파일을 만듭니다.이 자체는 실제 구성이 포함된 파일을 로드합니다.그러므로 나는 두 개가 필요합니다.PropertyPlaceHolderConfigurer
하나는 시스템 매개 변수를 해결하고 다른 하나는 실제 구성 내에 있습니다.
어떻게 해야 할지 생각나는 게 있나요?
예, 둘 이상을 수행할 수 있습니다.첫 번째 플레이스홀더가 확인할 수 없는 플레이스홀더를 무시하도록 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>
응용 프로그램에 따라 시스템 속성을 조사해야 합니다.모드에서는 파일에서 속성을 로드할 수 있지만 설정된 경우 시스템 속성이 속성 파일의 값을 재정의할 수 있습니다.
다른 해결 방법은 PropertyPlaceholderConfigurer의 자리 표시자 Prefix 속성을 사용하는 것입니다.두 번째(세 번째, 네 번째...) 구성자에 대해 이 이름을 지정한 다음 모든 해당 자리 표시자 앞에 붙이면 충돌이 발생하지 않습니다.
<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}"/>
주의: 여러 구성자와 관련된 버그가 있을 수 있습니다.자세한 내용은 http://jira.spring.io/browse/SPR-5719 을 참조하십시오.
여러 명이 로컬로 작업할 수 없습니다.하지만 아직은 나 자신을 제외하고는 누구도 비난하지 않습니다.
내 쪽에서는 PropertyPlaceholderConfigurer 두 가지 속성을 모두 사용하여 재생합니다.
- 순서(첫 번째 액세스/파싱된 PPC의 경우 더 낮아야 함)
확인할 수 없는 자리 표시자 무시("처음 액세스/파싱된 PPC의 경우 false", 다음 PPC의 경우 "true")
또한 두 PPC 모두에 2개의 고유 ID를 제공합니다(하나가 다른 하나에 의해 덮어쓰지 않도록).
완벽하게 작동합니다.
도움이 되길 바랍니다.
이를 직접 수행할 수는 없으며, Spring의 이번 JIRA 호에서 그 이유를 설명합니다(자세한 설명은 Chris Beams의 의견을 참조하십시오)
https://jira.springsource.org/browse/SPR-6428
그러나 Spring 3.1 이상을 사용하면 PropertyPlaceholderConfigurer 클래스 대신 PropertySourcesPlaceholderConfigurer 클래스를 사용할 수 있습니다.
Spring 프레임워크 문제 github에서 문제와 해결책을 보여주는 Maven 기반 프로젝트를 다운로드할 수 있습니다.
https://github.com/SpringSource/spring-framework-issues
다운로드한 프로젝트에서 문제 번호 SPR-6428을 찾습니다.
우리는 다음과 같은 접근 방식을 사용하고 있습니다.
<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
구성 파일의 경로를 재정의하는 데 사용할 수 있습니다.
또한 응용프로그램은 공통 모듈에서 기본값으로 정의할 수 없는 자리 표시자에 대한 일부 기본값을 번들로 제공합니다.
두 개의 다른 아이디를 주는 것만으로도 저는 효과가 있었습니다.스프링 3.0.4를 사용하고 있습니다.
도움이 되길 바랍니다.
이 경우 두 개의 PPC를 정의하고 독립적으로 사용해야 합니다.자리 표시자 Prefix 속성을 설정하여 원하는 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;
언급URL : https://stackoverflow.com/questions/686635/is-it-possible-to-have-multiple-propertyplaceholderconfigurer-in-my-applicationc
'programing' 카테고리의 다른 글
jQuery - 문자열에 있는 문자의 모든 인스턴스를 바꿉니다. (0) | 2023.08.10 |
---|---|
파워셸 변수를 시작 작업으로 전달 (0) | 2023.08.10 |
SQL에서 ID별로 그룹화된 모든 필드의 최대 평균을 찾는 방법은 무엇입니까? (0) | 2023.08.10 |
옵션 단추의 독립적인 그룹 만들기 (0) | 2023.08.10 |
빠른 상수:구조자 열거형 (0) | 2023.08.10 |