아래 빈 정의가 있습니다. "exposeSystemProperties"빈에 대한 placeholderPrefix를 "$ {"로 변경하고 두 번째 빈의 특성 경로에서 사용하면 작동합니다. "% {"이외의 것으로 변경하면 작동하지 않습니다. 다른 문자열 (예 : "$ sys {", "# [", 등)을 사용할 수 없습니다. 나는 현재 3.0.5에있다. 릴리스.PropertyPlaceholderConfigurer의 특정 placeholderPrefix를 Spring 3.x가 무시하는 이유는 무엇입니까?
이유에 대한 의견이 있으십니까? 이 모든 것을 합성하기 위해 제 3의 PropertyPlaceHolderConfigure가 있습니다. 따라서 두 개의 접두사 만 있으면 작동하지 않습니다.
<bean id="exposeSystemProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="placeholderPrefix"><value>$sys{</value></property>
<property name="order" value="10" />
</bean>
<bean id="localFileProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_NEVER" />
<property name="placeholderPrefix" value="%{" />
<property name="placeholderSuffix" value="}" />
<property name="order" value="20" />
<property name="locations">
<array>
<bean class="java.lang.String">
<constructor-arg><value>classpath:properties/$sys{deploy.env}/client.properties</value></constructor-arg>
</bean>
</array>
</property>
</bean>
그래서 당신이 말하고있는 봄로드를 문맥에 시스템 변수를? 네가 다른 방법으로 폭로해야한다고 생각 했어. –
@Spencer, yes :'System' /'Environment' 변수는 응용 프로그램 컨텍스트 생성시 Spring에서 사용할 수 있으므로 환경을 구동하기 위해 의존 할 수 있습니다. 이 변수는'System.setProperty ("ENV_SYSTEM", "qa")'또는'-D' JVM 인수를 통해 전달할 수 있습니다 : -DENV_SYSTEM = qa' – tolitius
이것은 확실히 작동합니다 내 문제를 해결할 수 있지만 구성자가 제대로 해결하지 못하는 이유를 여전히 해결하지는 못합니다. 필자는이 인라인을 실제로 디버그 할 시간이 없었지만, 그렇게 할 때 내 목록에있는 첫 번째 항목입니다. 다른 견해에 감사드립니다. –