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()));
}
}
优点是能准确遵循cron表达式