不推荐使用MethodInvokingTimerTaskFactoryBean,我应该使用哪个类?

时间:2012-03-22 15:49:57

标签: spring scheduled-tasks scheduling

我有一个服务类,我需要根据配置参数定期执行一个方法(固定速率)。最初我打算使用Java TimerTask,然后配置一个计时器来运行它。然后还要绑定spring应用程序上下文生命周期事件来停止,启动所述计时器。

解析他们的documentation I came across this时。这提供了一个很好的好处,这个任务的生命周期可以通过spring自动为我管理。此外,允许扩展能力,如果我想将其抛入Quartz或实现某种其他调度实现,则更多的是配置更改而不是代码更改。

这听起来很诱人但后来我查看了他们的java docs and discovered that the class is deprecated

弃用说明表明开发人员应该使用spring.scheduling.concurrent包。但是,该包不包含任何提供Runnable接口抽象的类似类(我想做)。这个功能在春天不再可用吗?我的服务类是否应该实现Runnable接口,然后让该方法调用我的Service Interface定义的方法?

2 个答案:

答案 0 :(得分:3)

我最终得到了以下解决方案:

<!-- Scheduled tasks to be exectued -->
<task:scheduled-tasks scheduler="scheduler">
    <task:scheduled ref="myClass" method="myMethod" fixed-rate="${some.value}"/>
</task:scheduled-tasks>

<!-- The scheduler that executes scheduled tasks -->
<task:scheduler id="scheduler" pool-size="5"/>

答案 1 :(得分:1)

您可以使用@Scheduled Annotation