想要定时运行工作,能够采纳实现ApplicationRunner和cron的形式进行。然而,cron这种形式服务启动的时候不会运行(如果你的表达式外面不是具体工夫,而是距离多少分钟或者多少小时)。而ApplicationRunner每次启动都会先运行一下,上面简略看一下成果。

一.cron形式

1.在启动类退出@EnableScheduling,用于开启定时工作性能

2.简略的示例

@Componentpublic class CronTask {    /**     * 每分钟执行一次     */    @Scheduled(cron="0 */1 * * * ?")    public void execute() {        System.out.println("CronTask工作执行");    }}

二.实现ApplicationRunner接口方式

简略示例:

@Componentpublic class ApplicationRunnerTask implements ApplicationRunner {    /**     * 每分钟执行一次     * @param args     * @throws Exception     */    @Override    public void run(ApplicationArguments args) throws Exception {        while(true){            try{                System.out.println("ApplicationRunnerTask工作执行");                Thread.sleep(1000 * 60);            }catch(Exception e){                System.out.println("Exception:" + e);            }        }    }}

三.运行比照差别

能够看到ApplicationRunnerTask先打印,而cronTask前面才打印。因为cronTask会在整分,整时打印(取决于你设置的是隔多久)。例如我示例设置的是每分钟打印,如果我程序是17点18分19秒启动,那么cronTask须要到17点19分0秒才打印。而ApplicationRunnerTask是服务一启动就打印,不存在期待的问题。