都2020年了!还不会springboot定时任务?

springboot定时任务

  • 1.什么是定时任务?
    • 1.在需要定时执行的方法上加上@Sceduled注解,参数是cron表达式
    • 2.在主配置类中开启定时任务@EnableSchedulin
    • 2.怎样使用定时任务?


1.什么是定时任务?

知道定时炸弹吧,定一个时间,就自动爆炸;
这里的定时任务类似,不过不是爆炸哈!
定时任务在项目开发中很实用,比如我们需要在每天凌晨的时候,分析前一天的的日志信息,每个月需要一天来收集上个月的数据形成报表等等…

In short,就是你可以指定一个方法,让它什么时候执行,它就什么时候执行,是不是很有趣呀?来看看怎么使用吧!!

2.怎样使用定时任务?

spring为我们提供了两个注解来支持设定定时任务;
@EnableScheduling :开启定时任务;
@Scheduled :给我们需要定时执行的方法上加上这个注解

这里先介绍一下cron表达式:就是用来设置时间的

cron表达式包含秒,分,时,日,月,周几(共6位)
都2020年了!还不会springboot定时任务?
都2020年了!还不会springboot定时任务?
举例:

0 * * ? * MON-FRI :指的是任意月周一到周五的任意分钟的每一分钟执行一次
1,2,3,4 * * ? MON-STA :任意月的周一到周六的任意分钟的1,2,3,4秒执行一次
0-4 * * ? * MON-SAT:任意月的任意天的周一到周六的任意分钟的0-4秒执行一次
0/4 * * ? MON-STA:任意月的任意天的周一到六的任意分钟的每4秒执行一次
都2020年了!还不会springboot定时任务?

注意:,

  • 每个数间要以空格分开
  • ? 是用来解决日期冲突的,比如我们在日位置用了*,在周几用了MON-STA,这里就矛盾了
  • 因此要把日所在位置换成?,可以解决冲突

代码:

1.在需要定时执行的方法上加上@Sceduled注解,参数是cron表达式

@Servicepublic class TaskService {
    @Scheduled(cron = "0 * * * * MON-STA")public void hello(){System.out.println("hello....");}}

2.在主配置类中开启定时任务@EnableSchedulin

都2020年了!还不会springboot定时任务?

@SpringBootApplication@EnableSchedulingpublic class SpringbootSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringbootSecurityApplication.class, args);}}
上一篇:Prometheus监控系列二 | Docker容器化部署实战


下一篇:ceph 运维操作-MON