2012-03-22 116 views
2

我有一個服務類,我需要根據配置參數定期執行一個方法(固定速率)。最初我打算使用Java TimerTask,然後配置一個計時器來運行它。然後再配合Spring應用程序上下文生命週期事件停止,啓動所述定時器。MethodInvokingTimerTaskFactoryBean已棄用,應該使用什麼類來代替?

解析它們的documentation I came across this時。這提供了一個很好的好處,這個任務的生命週期可以自動爲我管理。此外,允許擴展能力,以便如果我想將其引入到Quartz中或實現某種其他的調度實現,它更多的是配置更改,而不是代碼更改。

這聽起來確實誘人,但後來我檢查了他們的java docs and discovered that the class is deprecated

棄用說明指出,開發商應該使用spring.scheduling.concurrent包來替代。但是,該軟件包不包含任何提供Runnable接口抽象類的類(我希望這樣做)。這個功能在春天不再可用嗎?我的服務類應該實現Runnable接口,然後只需調用我的Service Interface定義的方法?

回答

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

您可以使用@Scheduled Annotation

+0

我看着這一點,但需要有速度是可配置的(即$ {} some.value)。我知道我可以使用cron。但我採用了不同的方法。 – predhme 2012-03-23 14:33:59

相關問題