springboot整合定时任务

在项目开发中,经常需要执行一些定时任务,比如 每月1号凌晨需要汇总上个月的数据分析报表; 每天凌晨分析前一天的日志信息等定时操作。Spring 为我们提供了异步执行定时任务调度的方式。

使用的注解:

@EnableScheduling 启动类上开启基于注解的定时任务标识的方法会进行定时处理

@Scheduled标识的方法会进行定时处理

需要通过 cron 属性来指定 cron 表达式: 秒 分 时 日 月 星期几

 cron表达式:

位置

取值范围

可指定的特殊字符

0-59

, - * /

0-59

, - * /

小时

0-23

, - * /

日期

1-31

, - * ? / L W C

月份

1-12

, - * /

星期

0-7SUN-SAT 07都是周日,1-6是周一到周六

, - * ? / L C #

 

特殊字符

代表含义

,

枚举,一个位置上指定多个值,以逗号分隔

-

区间

*

任意

/

步长,每隔多久执行一次

?

/星期冲突匹配 ,指定哪个值,另外个就是?,比如: * * * ? * 1 每周1执行,则日用不能用 * ,不是每一天都是周一; * * * * 2 * ? 每月2,则星期不能用*

L

最后

W

工作日

C

calendar联系后计算过的值

#

这个月的第几个星期几,4#2,第2个星期四

 1-5 * * * * 1到5秒,每秒都触发任务

 */5 * * * * 每隔5秒执行一次

 0 */1 * * * 每隔1分钟执行一次

 0 0 5-15 * * 每天5-15点整点触发

0 0-5 14 * * 在每天下午2点到下午2:05期间的每1分钟触发

0 0/5 14 * * 在每天下午2点到下午2:55期间的每5分钟触发

0 0/5 14,18 * * 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

0 0/30 9-17 * * 朝九晚五工作时间内每半小时

0 0 12 ? * WED 表示每个星期三中午12

 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:102:44触发

0 0 23 L * ? 每月最后一天23点执行一次

0 15 10 LW * ? 每个月最后一个工作日的10150秒触发任务

0 15 10 ? * 5#3 每个月第三周的星期五的10150秒触发任务

 

实践:

1.创建service/ScheduledService   方法上添加注解 @Scheduled(cron= "*/3 * * * * MON-FRI")

package com.cc.springboot.service;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
//创建定时任务

@Service
public class ScheduledService {
  private static int count=1;

//  second(秒), minute(分 ), hour(时), day(天) , month(月), week(周).
//          "0 * * * * MON-FRI"
//    "0 * * * * MON-FRI" 代表每分钟执行一次
  @Scheduled(cron= "*/3 * * * * MON-FRI")
    public void dataCount(){
        System.out.println("数据统计第"+count++ +"次");
    }
}

2.应用类application中添加注解  类上添加注解 @EnableScheduling

package com.cc.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling  //开启注解版的定时任务
@EnableAsync  //开启基于注解版的异步处理
@SpringBootApplication
public class Springboot11TaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot11TaskApplication.class, args);
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值