如何使用Spring 3.0表达式语言参数化@Scheduled(固定延迟)?

当使用Spring 3.0功能对计划任务进行注释时,我想从我的配置文件中设置as参数,而不是像现在这样将其硬连接到我的任务类中。fixedDelay

@Scheduled(fixedDelay = 5000)
public void readLog() {
        ...
}

不幸的是,似乎使用Spring表达式语言(SpEL)的手段返回一个String对象,而该对象又无法按照参数的要求自动装箱为长值。@ValuefixedDelay


答案 1

Spring v3.2.2 在原来的 3 个长参数中添加了 String 参数来处理这个问题。,并且现在也可用。fixedDelayStringfixedRateStringinitialDelayString

@Scheduled(fixedDelayString = "${my.fixed.delay.prop}")
public void readLog() {
        ...
}

答案 2

您可以使用注释,但只能与参数一起使用:@Scheduledcron

@Scheduled(cron = "${yourConfiguration.cronExpression}")

您的 5 秒间隔可以表示为 。但是,据我所知,您不能提供小于1秒的精度。"*/5 * * * * *"


推荐