我需要将String常量指定为属性值:
<int:header name="importedFilename" />
这里“importedFilename”不应该是硬编码的,而是取自f.e.来自Constants.IMPORTED_FILENAME_HEADER
静态字段。有办法吗? “int”是Spring Integration命名空间btw。此外,似乎没有适当的bean定义来替换int:header
- 所以我不能使用<bean class="Header">...
。
答案 0 :(得分:23)
<util:constant id="importedFilenameHeader"
static-field="your.package.Constants.IMPORTED_FILENAME_HEADER"/>
然后,您应该可以通过其importedFilenameHeader
元素的ID(<int:header>
)来引用它,如下所示:
<int:header name="importedFilename" ref="importedFilenameHeader"/>
修改强> 的
您应该可以使用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">
答案 1 :(得分:10)
<int:header name="#{T(com.example.Constants).IMPORTED_FILENAME_HEADER}" />
应该有用(见http://docs.spring.io/spring/docs/3.0.x/reference/expressions.html#d0e11977)。