springboot|springboot 配置定时任务及常用的 cron 表达式

本贴最后更新于 1634 天前,其中的信息可能已经时移俗易

javaDEMO

本网站记录了最全的各种 JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring 的, Mybatis 的等等各种,助力你从菜鸟到大牛,记得收藏哦~~
https://www.javastudy.cloud

springboot 引入定时任务

springboot 引入定时任务主要需要以下几步:
1.引入相关的依赖
2.配置程序开启定时任务
3. 编写定时任务

引入相关的依赖

只用引一个基础的 web 的依赖就可以了

implementation 'org.springframework.boot:spring-boot-starter-web'

配置程序开启定时任务

只需要在 Springboot 的 Main 函数的那个类上加个注解就可以了

/**
 * 只需要在这里面加上一个@EnableScheduling这个注解就可以了
 */
@SpringBootApplication
@EnableScheduling
public class DemoApplication {

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

}

编写定时任务

一般定时任务都会放在 task 包下面,代码如下:

/**
 * @Author https://www.javastudy.cloud
 * @CreateTime 2019/11/5
 **/
@Component
public class TestTask {

    /**
     * 定时任务的类和别的springBean没什么区别
     * 方法上要加@Scheduled,里面写定时的cron表达式
     */
    @Scheduled(cron = "0/5 * * * * *")
    public void testSchedule(){
        System.out.println(new Date());
        System.out.println("这个是每5秒执行一次");
    }
}

输出结果如下:
image.png

常用的 cron 表达式

对于 cron 表达式不太熟悉的同学,可以去这个在线网站进行生成 https://qqe2.com/cron
cron 表达式是从后往前读的,遇到 * 就读每 XX, 遇到数字就读 从第 XX 开始, 遇到 / 就读每隔多 XX 最后加个执行
如上述 DEMO 中

cron = "0/5 * * * * *"

每星期,每年,每月,每天,每小时,每分钟,从第 0 秒开始每隔 5 秒执行一次
以此类推,有以下常用表达式:
每隔 10 分钟执行一次:0 0/10 * * * *
每天 18 点执行一次:0 0 18 * * *
每月 1 号凌晨 3 点执行一次:0 0 3 1 * *

DEMO 总评

定时任务这块,一般小项目会这样去写,在实际生产中,会使用分布式定时任务框架去集中配置,不会分散在各个应用里面,主要的难点在于 cron 表达式,不好写,需要多总结,才能写出对的 cron 表达式

DEMO 源码下载

demospringbootschedule.zip

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 151 关注
  • schedule
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...