【发布时间】:2015-10-15 12:57:20
【问题描述】:
我的 fileMessageProvider() 为
@InboundChannelAdapter( value = "files" , poller = @Poller( fixedDelay = "${my.poller.interval}", maxMessagesPerPoll = "1" ))
public Message<File> fileMessageProvider() {
...
}
在部署时提供 NumberFormatException
Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myPoller' defined in "../MyPoller.class": Initialization of bean failed; nested exception is java.lang.NumberFormatException: For input string: "{#my.poller.interval}"
而不是 SpEL 如果我使用 fixedDelay = "10000" ,效果很好。
我的 Spring 集成版本 '4.0.0.RELEASE'
更新:1
我正在使用注释和 xml 配置的组合
批处理属性
my.poller.interval=20000
集成上下文.xml
<context:property-placeholder location="classpath:Batch.properties"/>
<context:component-scan base-package="com.org.reader" />
<int:transformer input-channel="files" output-channel="requests">
<bean class="com.org.reader.MyMessageToJobRequest">
<property name="job" ref="addMessages"/>
</bean>
</int:transformer>
【问题讨论】:
-
尝试使用#{ } insted {# }
-
Tried fixedDelay = "#{my.poller.interval}" 给出了类似的异常 java.lang.NumberFormatException: For input string: "#{my.poller.interval}"
-
将 # 更改为 $。它应该看起来像
${my.poller.interval}。当然,如果您有my具有pooler属性且具有interval属性的对象。 -
您可以发布您的财产文件吗?以及你阅读它的方式?
-
尝试使用 fixedDelay = "${my.poller.interval}"。这是这种情况下的异常消息 java.lang.NumberFormatException: For input string: "${my.poller.interval}"