Spring MVC 3在特定时间开始的时间计划任务
问题描述:
我想在Spring MVC中安排一个方法调用,以在每两个小时后运行。这可以通过Spring 3.0 Time Scheduler轻松完成。但是,我只想在一天的特定时间将执行关闭。也就是说,该方法应该从特定时间开始每2小时调用一次。Spring MVC 3在特定时间开始的时间计划任务
例如 - 我想让方法从上午6点开始每2小时运行一次。 TimeScheduler接口有一个scheduleAtFixedRate方法,它被重载以使用startTime Date参数。我不确定如何使用它。
任何想法如何实现?
答
你可以看看在TaskScheduler
接口。它提供了一种方法scheduleAtFixedRate(Runnable task, Date startTime, long period)
,它返回ScheduledFuture
。你可以用一些简单的Spring配置使用:
<task:scheduler id="scheduler" pool-size="10"/>
这将创建一个ThreadPoolTaskScheduler
实例,实现TaskScheduler
。将这个坏男孩连线到课堂,以便调用你的具体方法:
public class MyClass {
@Autowired
private TaskScheduler scheduler;
public void init() {
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
myMethod();
}
}, new Date(), 1000 * 60 * 60 * 2); //This will start now and run every two hours
}
public void myMethod() {
// the method you want to invoke
}
}
答
我会看看Spring的支持Task Execution and Scheduling。具体检查出@Scheduled
注释(与您可以指定根据cron表达式的时间表):
@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
// something that should execute on weekdays only
}
两个方法都是对的,取决于你想要遵循什么方法。我最终选择了cron。非常感谢。 – Tushar 2011-12-22 03:58:47