Динамическая загрузка значения свойства из активного списка профилей и установка значения в конфигурационном XML-файле

#java #spring #spring-batch

#java #весна #весенний замес

Вопрос:

У меня есть приложение spring bath, которое содержит пакетную конфигурацию. Я хочу динамически загружать профиль на основе параметра переменной environemnt из списка активных профилей. как только я получу значение, я должен установить переменную в XML-файле пакетной конфигурации. Он работает нормально, пока значение активного профиля равно одному, он работает нормально, если я даю лайк

 <context:property-placeholder location="classpath:application-${spring.active.profile}.properties" /> 
 

Но у меня есть список активных профилей
, например: -Dspring.active.profile=dev,localproperties,mycerts. Я хочу взять первое значение активного профиля и загрузить файл свойств и загрузить application-dev.properties.
Я попробовал следующий способ, но получил всю строку целиком в качестве значения профиля. как я могу загрузить первое значение активного профиля /.

 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <util:list>
                <value>classpath:application-${spring.profiles.active}.properties</value>
            </util:list>
        </property>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
    </bean>
 

Как я мог этого добиться?

Ответ №1:

у меня есть список активных профилей, например: -Dspring.active.profile=dev,localproperties,mycerts. Я хочу взять первое значение активного профиля

Для этого вы можете использовать выражение SpEL, что-то вроде:

 <context:property-placeholder 
 location="classpath:application-#{environment.getActiveProfiles()[0]}.properties" />
 

Обратите внимание , что свойство является именованным spring.profiles.active , а не spring.active.profile нет .