当使用Spring 3.0功能注释计划任务时,我想从配置文件中将fixedDelay
设置为参数,而不是像当前那样将其硬连接到任务类中...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
不幸的是,似乎使用Spring Expression Language(SpEL)的方式
@Value
返回了一个String对象,该对象又不能按照fixedDelay
参数的要求自动装箱成一个长值。 最佳答案
我想@Scheduled
注释是毫无疑问的。因此,可能适合您的解决方案是使用task-scheduled
XML配置。让我们考虑以下示例(从Spring doc复制):
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="someObject" method="readLog"
fixed-rate="#{YourConfigurationBean.stringValue}"/>
</task:scheduled-tasks>
...或者如果从String到Long的转换不起作用,则类似以下内容:
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="someObject" method="readLog"
fixed-rate="#{T(java.lang.Long).valueOf(YourConfigurationBean.stringValue)}"/>
</task:scheduled-tasks>
同样,我还没有尝试过这些设置中的任何一个,但是我希望它可以对您有所帮助。