Springboot非分布式定时任务实现代码

 更新时间:2020年11月19日 09:51:51   作者:大唐冠军侯  
这篇文章主要介绍了Springboot非分布式定时任务实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1. 核心注解

在springboot项目中我们可以很方便地使用spring自己的注解@Scheduled和@EnableScheduling配合来实现便捷开发定时任务。

@EnableScheduling注解的作用是发现注解@Scheduled的任务并后台执行,此注解可以加到启动类上也可以加到执行调度任务类上。

经测试,当有多个包含定时任务的类时,@EnableScheduling注解加在其中一个类上就可以保证所有定时任务的成功实现。

注意:定时任务的类上还需要配合使用@Configuration或@Component注解,这两个注解都可以。

2. 实例代码

2.1 @EnableScheduling加在启动类上;

import com.my.common.util.DateUtil;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @description:
 * @author: Karl
 * @date: 2020/10/10
 */
@Component
public class TestSchedule01 {

  @Scheduled(cron = "0 * * * * ? ")
  public void test() {
    System.out.println("我是定时任务01,我执行了" + DateUtil.formatDateByDateTime(new Date()));
  }
}

import com.my.common.util.DateUtil;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @description:
 * @author: Karl
 * @date: 2020/10/10
 */
@Configuration
public class TestSchedule02 {

  @Scheduled(cron = "1 * * * * ? ")
  public void test() {
    System.out.println("我是定时任务02,我执行了" + DateUtil.formatDateByDateTime(new Date()));
  }
}

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

@EnableScheduling
@SpringBootApplication
public class DemoApplication {

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

}

2.1 @EnableScheduling加在任务类上;

import com.my.common.util.DateUtil;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @description:
 * @author: Karl
 * @date: 2020/10/10
 */
@Component
@EnableScheduling
public class TestSchedule01 {

  @Scheduled(cron = "0 * * * * ? ")
  public void test() {
    System.out.println("我是定时任务01,我执行了" + DateUtil.formatDateByDateTime(new Date()));
  }
}

import com.my.common.util.DateUtil;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @description:
 * @author: Karl
 * @date: 2020/10/10
 */
@Configuration
public class TestSchedule02 {

  @Scheduled(cron = "1 * * * * ? ")
  public void test() {
    System.out.println("我是定时任务02,我执行了" + DateUtil.formatDateByDateTime(new Date()));
  }
}

注意:只需要在其中一个任务类上加上@EnableScheduling注解,所有的定时任务就都可以正常运行。

3. @Scheduled的几种用法

@Scheduled这个注解支持3种定时方式,即:cron、fixedRate和fixedDelay

cron:是以表达式的形式来表示时间,最常见;

fixedRate:表示Scheduled隔多长时间调用一次,不管任务是否执行完;

fixedDelay:表示该任务执行完后隔多长时间再调用;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 使用Java如何将文本复制到剪贴板

    使用Java如何将文本复制到剪贴板

    这篇文章主要介绍了使用Java如何将文本复制到剪贴板问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 搭建一个基础的Resty项目框架

    搭建一个基础的Resty项目框架

    这篇文章主要为大家介绍了如何搭建一个基础的Resty项目框架示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java判断两个集合是否具有交集及如何获得交集详解

    Java判断两个集合是否具有交集及如何获得交集详解

    这篇文章主要给大家介绍了关于Java判断两个集合是否具有交集及如何获得交集的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java中日期时间比较的多种方法及实用代码

    Java中日期时间比较的多种方法及实用代码

    本文介绍了Java中不同日期时间类的比较方法,包括java.util.Date、java.util.Calendar、java.time API和java.sql.Timestamp,提供了使用before、after和compareTo等方法进行日期比较的示例代码,展示了各自的特点和使用场景,需要的朋友可以参考下
    2024-09-09
  • IntelliJ IDEA安装插件阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

    IntelliJ IDEA安装插件阿里巴巴Java开发手册(Alibaba Java Coding Guidelines

    这篇文章主要介绍了IntelliJ IDEA安装插件阿里巴巴Java开发手册(Alibaba Java Coding Guidelines),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Java自定义异常与异常使用的最佳方式

    Java自定义异常与异常使用的最佳方式

    这篇文章主要介绍了Java自定义异常与异常使用的最佳方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java简单高效实现分页功能

    Java简单高效实现分页功能

    这篇文章主要介绍了Java简单高效实现分页功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 学习SpringMVC——国际化+上传+下载详解

    学习SpringMVC——国际化+上传+下载详解

    本篇文章主要介绍了学习SpringMVC——国际化+上传+下载,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • java正则替换括号中的逗号实现示例

    java正则替换括号中的逗号实现示例

    本文主要介绍了java正则替换括号中的逗号实现示例,主要介绍了两种示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • Java Redisson多策略注解限流

    Java Redisson多策略注解限流

    这篇文章主要介绍了Java Redisson多策略注解限流,文章使用Redisson的RRateLimiter进行限流,详细介绍,感兴趣的小伙伴可以参考下面文章内容
    2022-09-09

最新评论