Как ссылаться на константу в атрибуте в Spring

Мне нужно указать константу String как значение атрибута:

<int:header name="importedFilename" />

здесь "importedFilename" не должен быть жестко запрограммирован, но выбран из f.e. из статического поля Constants.IMPORTED_FILENAME_HEADER. Есть ли способ сделать это? "int" - это Spring пространство имен интеграции btw. Также кажется, что нет подходящего определения bean для замены int:header с - поэтому я не могу использовать <bean class="Header">....

Ответы

Ответ 1

<util:constant id="importedFilenameHeader"
    static-field="your.package.Constants.IMPORTED_FILENAME_HEADER"/>

Затем вы можете ссылаться на это по своему id (importedFilenameHeader), который будет использоваться в вашем элементе <int:header> следующим образом:

<int:header name="importedFilename" ref="importedFilenameHeader"/>

EDIT:

Вы должны сделать это, используя SpEL. Это Spring язык выражений, и он доступен в версии 3.0 (возможно, 2.5 тоже?).

Думаю, вы можете это сделать:

<util:constant id="importedFilenameHeader"
    static-field="your.package.Constants.IMPORTED_FILENAME_HEADER"/>
<int:header name="#{importedFilenameHeader}" ... />

Spring должен затем оценить это значение константы importedFilenameHeader, которое мы определили в исходной части (которая также включена в этот пример).

Вот некоторая информация о местоположении для получения пространства имен util:

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-2.5.xsd">