저는 Spring의 새로운 Environment
지원을 사용하여 사용자 정의 속성 자리 표시자를 이식하려고하고 있지만 현재 자리 표시 자 마술에서 얻는 결과를 얻는 방법을 알 수 없습니다.속성 Spring 3.1의 자리 표시 자 상속
내가 원하는 것은 속성 파일의 기본 묶음을 classpath에서 읽은 다음 그 속성을 다른 곳에서 많은 속성 파일로 오버라이드 (오버레이)하도록하는 것입니다. 다른 파일 그룹에 설정된 속성 만 모든 속성을 바꾸는 것은 좋지 않습니다.
public class ConfigResourcesFactoryBean implements FactoryBean<Resource[]> {
// Loads a bunch of Resources (property files)
// based on System.property/Environment variable "customConfig"
}
이 이 이
이제 customConfig가 설정 될 수 있습니다
3.1
<bean class="com.snaphop.spring.ConfigResourcesFactoryBean" id="customConfig">
<property name="parameterName" value="customConfig"/>
<property name="defaultResources" value="classpath*:META-INF/spring/*.properties"/>
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" id="customPropertyPlaceholder">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="locations" ref="customConfig"/>
</bean>
봄에 앞서 이제 ConfigResourcesFactoryBean은 자리 표시 자 설정에 공급하는 자원의 목록을 찾는 마법의 FactoryBean이다 -DcustomConfig=file://blah/*.properties
또는 export customConfig=file://blah/*.properties
입니다.
blah
디렉토리의 등록 정보는 classpath*:META-INF/spring/*.properties
의 서브 세트 만 대체합니다. 따라서 공장에서 반품 된 Resource[]
은 각각 classpath*:META-INF/spring*.properties
,이어서 file://blah/*.properties
의 합집합이됩니다.
이제 내 Resource[]
공장 대신에 PropertySources
사용자 지정을 만들고 PlaceholderConfig에 와이어를 연결할 수 있지만 위의 경우 값이없는 것처럼 보입니다.
서블릿 환경에서만 작동하므로 통합 테스트가 작동하지 않는다고 맹세했기 때문에 ApplicationContextInitializer
을 사용할 수 없습니다. (환경 테스트를 수행 할 때마다 단위 테스트 하나 하나에 주석을 추가하는 기분이 들지 않습니다. 이전처럼 시스템 속성을 설정할 수있을 때입니다.)
하드 코드 된 소스의 등록 정보를 사용자 정의 소스로 오버레이/구현하지 않고 어떻게 오버레이/구현해야합니까?
다소 비슷합니다 : http://stackoverflow.com/questions/8587489/how-to-set-active-spring-3-1-environment-profile-via-a-properites-file-and-not-v –