springboot依靠注解的定时任务与hutool的定时任务

在学习hutool文档时发现它也有一个定时任务,怎么实现的呢?

resources目录下创建一个config目录,config目录下创建cron.setting文件

[com.fzg.common.demo.uuid]
UUIDdemo.getUUid = 0/2 * * * * ?

随便创建一个demo类,main方法执行即可

import cn.hutool.cron.CronUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * create by fzg
 * 2022/12/13 16:05
 */

@Slf4j
public class Demo10 {

    public static void main(String[] args) {
        // 启动定时任务
        CronUtil.start();
    }

}

说明:中括号里面的是包名,common,demo,uuid都是package; UUIDdemo是类名,getUUid是方法名;0/2 * * * * ?是cron表达式。

这个定时任务并不能遵循cron表达式,不能精确到秒,最多每分钟执行一次。0/2 * * * * ?这个表达式虽然是每2秒执行一次,但是运行的时候还是每分钟执行。

接下来看看springboot利用注解创建定时任务

随便创建一个类

import cn.hutool.core.date.LocalDateTimeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.time.LocalDateTime;

/**
 * create by fzg
 * 2022/12/14 10:53
 */

@Slf4j
@Configuration
@EnableScheduling
public class SpringScheduleDemo {
    
    // 每秒执行一次
    @Scheduled(cron = "0/1 * * * * ?")
    public void test(){
        log.info("任务启动:{}", LocalDateTimeUtil.formatNormal(LocalDateTime.now()));
    }

}

image

优点是能准确遵循cron表达式
posted @ 2022-12-14 11:25  合起来的彳亍  阅读(522)  评论(0编辑  收藏  举报