2017-09-26 72 views
1

我有一个像MyController.foo()这样的方法,我想每天在00:00执行它。每天午夜执行任务 - Grails 3.2.2

我已经看到一些解决方案使用TimerTask在1秒内延迟几秒钟,但时间改变它的一天会带来一些错误。

那么...什么是最有效的方法来实现这一目标?

回答

2

首先,你需要使用弹簧启动注释,使调度:

@EnableScheduling 
class Application extends GrailsAutoConfiguration { 
    static void main(String[] args) { 
     GrailsApp.run(Application, args) 
    } 
} 

然后你就可以把@Scheduled注解你的方法:

@Scheduled(cron="00 00 * * *") 
def foo() { 
    //do something 
} 

cron表达式00 00 * * *手段执行每midnigth。

+0

我必须添加任何东西到持有'foo()'方法的控制器吗? –

+0

我应该将该方法放置在控制器还是服务中? –

+1

服务是计划任务的更好场所。 –