springboot-定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息,spring为我们提供了异步执行任务调度的方式,提供了两个接口

  • TaskExecutor接口
  • TaskScheduler接口

两个注解:

  • @EnableScheduling
  • @Scheduled 

1 创建一个springboot项目

参考地址:springboot-hello world

创建项目过程中添加web模块

2 在主程序上开启定时任务功能

只需要增加一个@EnableScheduling注解

src/main/java/com/lv/Springboot09TestApplication.java

package com.lv;

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

@EnableScheduling //开启定时功能的注解
@SpringBootApplication
public class Springboot09TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot09TestApplication.class, args);
    }
}

3 新建一个service包,并在该包下编写ScheduledService

使用cron表达式设定时间

src/main/java/com/lv/service/ScheduledService.java

package com.lv.service;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Service
public class ScheduledService {
    //在一个特定的时间执行这个方法~ Timer
    //cron表达式~
    //秒 分 时 日 月 周几
    /*
        30 15 10 * * ? 每天10点15分30 执行一次
        30 0/5 10,18 * * ? 每天10点和18点,每个5分钟执行一次
        0 15 10 ? * 1-6 每个月的周一到周六 10:15分执行一次
     */
    @Scheduled(cron = "0 46 16 * * ?")
    public void hello(){
        System.out.println("hello,你被执行了~");
    }
}

4 启动程序测试

方法在我们设定的时间准时执行

5 cron

cron表达式在线生成地址: quartz/Cron/Crontab表达式在线生成工具-BeJSON.com

posted @ 2022-03-10 16:55  从0开始丿  阅读(113)  评论(0编辑  收藏  举报