Дополнительные файлы свойств для spring-batch-admin

У меня есть веб-приложение, использующее spring-batch, и сейчас я интегрирую spring-batch-admin для базового администрирования.

Проблема в том, что файлы конфигурации заданий (которые совместно используются с конфигурацией существующего приложения) используют свойства из файлов в пути к классам моего приложения, но контекст spring-batch-admin не может их загрузить.

Быстрое решение состояло в том, чтобы переопределить placeholderProperties bean в spring-batch-admin просто для добавления моих файлов свойств:

<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>
            <value>classpath:/path/to/jobs-config.properties</value> <!-- adding my properties here -->
        </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>

Я не хочу перемещать свои свойства в один из файлов spring-batch-admin по умолчанию. Есть ли более простой способ сделать это?


person Cristian Greco    schedule 04.02.2015    source источник


Ответы (1)


Отвечая на свой вопрос здесь...

Как описано в документации, каждый файл конфигурации задания, под META-INF/spring/batch/jobs/*.xml загружается spring-batch-admin как дочерний контекст и заполнители свойств из родительского (т.е. этот bean-компонент по умолчанию) наследуются, но дочерний контекст всегда может создать свой собственный bean-компонент-заполнитель.

Учитывая, что в моем случае файлы конфигурации задания используются совместно с существующим приложением и используют свойства из пути к классам приложения, решение состоит в том, чтобы создать новый файл задания в META-INF/spring/batch/jobs/*.xml, специфичном для spring-batch-admin:

<!-- placeholder bean with additional properties for the child context -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:/path/to/job-config.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>

<!-- external job configuration file is imported -->
<import resource="classpath*:/path/to/job.xml" />
person Cristian Greco    schedule 05.02.2015
comment
ссылка на документацию не работает - person pramodc84; 03.05.2018