this answer에 따르면 Spring 일괄 처리 클래스 org.springframework.batch.support.SystemPropertyInitializer
을 사용하여 스프링 컨텍스트를 시작할 때 시스템 속성을 설정할 수 있습니다.속성 자리 표시자를 설정하기 전에 SystemPropertyInitializer를 사용하여 속성 자리 표시자를 설정하기 전에
<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/org/springframework/batch/admin/bootstrap/batch.properties</value>
<value>classpath:batch-default.properties</value>
<value>classpath:batch-${ENVIRONMENT:hsql}.properties</value>
</list>
</property>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="order" value="1" />
</bean>
그러나 SystemPropertyInitializer
을 시스템 속성을 설정하려면 afterPropertiesSet()
를 사용하고, 분명히이 후 을 발생합니다 특히
ENVIRONMENT
을 설정하는 데 사용할 수 있기를 기대했다 구성은
PropertyPlaceholderConfigurer
입니다.
이것을 달성 할 수 있습니까?
시스템 속성과 환경 속성의 차이점을 어떻게 적용 할 수 있는지 잘 모르겠습니다. 'SystemPropertyInitializer' 클래스는 코드 내에서'System.setProperty()'를 호출합니다. 내가 실행하고있는 것은'placeholderProperties'가 해결 될 때까지 호출되지 않는다는 것입니다. 이 솔루션에서 동일한 문제가 발생하지 않을까요? 스프링 라이프 사이클에 대한 지식이 충분하지 않습니다. – Stewart
추가 정보 (의견이 너무 깁니다.) –