2011-12-21 45 views
3

我想在Spring MVC中安排一个方法调用,以在每两个小时后运行。这可以通过Spring 3.0 Time Scheduler轻松完成。但是,我只想在一天的特定时间将执行关闭。也就是说,该方法应该从特定时间开始每2小时调用一次。Spring MVC 3在特定时间开始的时间计划任务

例如 - 我想让方法从上午6点开始每2小时运行一次。 TimeScheduler接口有一个scheduleAtFixedRate方法,它被重载以使用startTime Date参数。我不确定如何使用它。

任何想法如何实现?

回答

2

你可以看看在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 
    } 
} 
+0

两个方法都是对的,取决于你想要遵循什么方法。我最终选择了cron。非常感谢。 – Tushar 2011-12-22 03:58:47

0

我会看看Spring的支持Task Execution and Scheduling。具体检查出@Scheduled注释(与您可以指定根据cron表达式的时间表):

@Scheduled(cron="*/5 * * * * MON-FRI") 
public void doSomething() { 
    // something that should execute on weekdays only 
} 
+0

我确实尝试过,我无法实现的是在一天的特定时间触发重复执行。 – Tushar 2011-12-21 04:14:04

+0

重复多久?这是你想要每天发生的事情,还是有一天开始并永远运行? – 2011-12-21 04:16:22

+0

我想在一天中的特定时间开始(这是一次),然后执行每2小时永久执行一次。 – Tushar 2011-12-21 04:21:13

相关问题