Spring Boot 要实现定时任务只要加 3 个注解就可以完成完成 只要分别在启动类,类,方法 加上
@EnableScheduling @Component @Scheduled 这三个注解缺一个都不行

1.在启动类加上 @EnableScheduling 注解

@EnableScheduling //定时任务在启动类注解
@SpringBootApplication
public class PulsApplication {
    public static void main(String[] args) {
        SpringApplication.run(PulsApplication.class, args);
    }
}

2.在需要设置定时任务的类上加 @Component 注解 ,在定时任务类里写需要执行的方法,然后在方法上加上 @Scheduled 注解并设置时间,这个方法就会在设定的时间里执行 

@Component //定时任务在类上的注解
public class TimeTask {

    /**
     * initialDelay 第一次启动任务延迟时间(单位 毫秒)
     * fixedRate    每次任务间隔时间 (单位 毫秒)
     */
    @Scheduled(initialDelay = 1000,fixedRate = 3000) //定时任务在方法上的注解
    public void timedA(){
        System.out.println("A 小熊369  "+new Date());
    }

    /**
     * cron 表达式 秒 分 时 天 月 年
     * cron = "10 44 21 * * ?" 表示每天 21点 44分 10秒 开始执行
     */
    @Scheduled(cron = "10 44 21 * * ?") //定时任务在方法上的注解
    public void timedB(){
        System.out.println("B 小熊369  "+new Date());
    }
}

定时任务执行执行效果图:

@Scheduled 注解里一般设置时间有两种方式

  • 一种是用 initialDelay 设置项目启动后延迟多少时间后执行和用 fixedRate 设置每次任务间隔时间,这种一般用于不需要准时准点时使用,例如每30分钟更新一下数据库,统计一下活跃数据等,如果有准时准点的要求用 cron 表达式会更好。
  • cron 表达式 一般用于准时统计,例如每个月 1号生成上一个月的月报,或者是凌晨时统计前一天的数据。

cron 表达式在线自动生成工具,下面两个选一个点开即可使用

Cron表达式生成器 - Toolzl工具https://www.toolzl.com/tools/croncreate.html下面这个工具比上面的少了一个季节的选择

在线Cron表达式生成器通过这个生成器,您可以在线生成任务调度比如Quartz的Cron表达式,对Quartz Cron 表达式的可视化双向解析和生成.https://cron.qqe2.com/cron 表达式的使用示例

下面只是一些示例,要全面学习 可以去阿里云Cron表达式 - 云服务器 ECS - 阿里云

示例说明
0 15 10 ? * *每天上午10:15执行任务
0 15 10 * * ?每天上午10:15执行任务
0 0 12 * * ?每天中午12:00执行任务
0 0 10,14,16 * * ?每天上午10:00点、下午14:00以及下午16:00执行任务
0 0/30 9-17 * * ?每天上午09:00到下午17:00时间段内每隔半小时执行任务
0 * 14 * * ?每天下午14:00到下午14:59时间段内每隔1分钟执行任务
0 0-5 14 * * ?每天下午14:00到下午14:05时间段内每隔1分钟执行任务
0 0/5 14 * * ?每天下午14:00到下午14:55时间段内每隔5分钟执行任务
0 0/5 14,18 * * ?每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务
0 0 12 ? * WED每个星期三中午12:00执行任务
0 15 10 15 * ?每月15日上午10:15执行任务
0 15 10 L * ?每月最后一日上午10:15执行任务
0 15 10 ? * 6L每月最后一个星期六上午10:15执行任务
0 15 10 ? * 6#3每月第三个星期六上午10:15执行任务
0 10,44 14 ? 3 WED每年3月的每个星期三下午14:10和14:44执行任务

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐