Spring Boot定时器创建及使用解析

Spring Boot定时器创建及使用解析

1. 概述

Spring Boot提供了丰富的定时任务的支持,其中最常用的是基于注解的定时任务。通过在方法上添加@Scheduled注解,即可实现对应的定时任务调度。

2. 添加依赖

在使用Spring Boot的定时任务功能前,我们需要先在pom.xml文件中添加对应的依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
</dependency>

3. 创建基本的定时任务

下面我们来看一个简单的定时任务示例。

@Component
public class MyTask {

    @Scheduled(fixedRate = 1000) // 每隔1秒执行一次
    public void run() {
        System.out.println("MyTask.run()执行了。。。");
    }
}

在该示例中,我们声明了一个名为MyTask的定时任务,并在其中添加了一个名为run的定时任务方法。通过@Scheduled(fixedRate = 1000)注解,我我们设置了该方法每隔1秒钟执行一次,而具体需要执行的任务则写在了run方法中。

4. 常用的注解及属性详解

上面的示例中使用的@Scheduled注解中指定了fixedRate属性,该属性为执行任务的时间间隔,还有很多其他的常用属性,如下所示:

  • fixedDelay:每隔多少毫秒执行一次任务,这里涉及到的时间包含了前一次任务执行完毕的时间间隔,默认值为0,表示任务执行完毕后立即开始下一次任务;
  • fixedRate:每隔多少毫秒执行一次任务,无论上次任务执行是否完成,都会立即开始下一次任务;
  • initialDelay:任务初始化延迟多久后执行,单位是毫秒;
  • cron:类似于Linux中的cron表达式,可以精确控制任务执行的时间。

5. 添加多种定时任务

下面我们看一个更复杂的定时任务示例,该例子中添加了不同类型的多个定时任务。

@Component
public class MyTask {

    @Scheduled(fixedRate = 1000) // 每隔1秒执行一次
    public void run() {
        System.out.println("MyTask.run()执行了。。。");
    }

    @Scheduled(fixedDelay = 3000) // 间隔多长时间再执行一次任务,单位是毫秒
    public void run1() {
        System.out.println("MyTask.run1()执行了。。。");
    }

    @Scheduled(initialDelay = 5000, fixedDelay = 3000) // 初始化延迟5秒,之后每隔3秒执行一次
    public void run2() {
        System.out.println("MyTask.run2()执行了。。。");
    }

    @Scheduled(cron = "0/5 * * * * *") // 每隔5秒执行一次
    public void run3() {
        System.out.println("MyTask.run3()执行了。。。");
    }
}

在该示例中,我们添加了4个不同类型的定时任务,每个任务的执行方式都不一样,通过调整配置,我们可以根据实际的需要来重复利用这些不同类型的任务。

结语

以上就是Spring Boot定时任务的基本用法,可以根据需要自行选择不同类型的定时任务,并定义需要执行的具体任务内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot定时器创建及使用解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JSP XMLHttpRequest动态无刷新及其中文乱码处理

    JSP XMLHttpRequest动态无刷新及其中文乱码处理,是前端开发中经常会遇到的问题之一。下面,我们将介绍一些方法来解决这个问题。 1. JSP动态无刷新 实现动态无刷新需要使用XMLHttpRequest对象。XMLHttpRequest对象被用于在web浏览器和web服务器之间传输数据。JSP实现动态无刷新的步骤一般如下: 步骤1:创建XMLHt…

    Java 2023年6月15日
    00
  • java 基础知识之IO总结

    Java 基础知识之 IO 总结 什么是 IO? IO(Input/Output,即输入/输出)是计算机领域中非常重要和基础的概念,指计算机与外部设备交换数据的过程。在 Java 中,IO 通常用于读取和写入文件、网络通信以及其他数据源和操作。Java 提供了强大的 IO 支持,为我们提供了便捷的、可靠的、跨平台的数据交换方案。 Java IO 的分类 Ja…

    Java 2023年5月23日
    00
  • 一篇文章带你Java Spring开发入门

    一篇文章带你Java Spring开发入门 介绍 Java Spring是一款流行的开源框架,用于构建Java应用程序。它提供了很多特性,如依赖注入、面向切面编程等等,使得开发Java应用程序变得更加快捷和高效。本文将介绍Java Spring的入门知识,包括环境配置、Maven项目的创建和依赖管理、Spring框架的使用等等。 环境配置 首先,确保你的电脑…

    Java 2023年5月19日
    00
  • Java查询时间段(startTime–endTime)间的数据方式

    针对Java查询时间段(startTime–endTime)间的数据方式,我提供以下完整攻略。 1. 时间格式 首先需要明确Java程序所使用的时间格式,常见的有”yyyy-MM-dd HH:mm:ss”、”yyyyMMddHHmmss”等。假设我们的时间格式为”yyyy-MM-dd HH:mm:ss”。 2. SQL查询语句 接下来就是SQL查询语句,假…

    Java 2023年5月20日
    00
  • Spring循环依赖的解决办法,你真的懂了吗

    Spring循环依赖是指两个或多个Bean之间相互依赖导致Bean的初始化出现死循环的情况。这种情况下,Spring无法完成Bean的初始化,进而导致程序无法启动。在开发过程中,循环依赖是比较常见的问题。下面是解决Spring循环依赖问题的完整攻略。 1.问题描述 Bean A和Bean B相互依赖,Bean A依赖于Bean B,同时Bean B依赖于Be…

    Java 2023年5月31日
    00
  • Java面向对象基础知识之数组和链表

    Java面向对象基础知识之数组和链表 1. 数组和链表区别 数组和链表都是线性数据结构,但它们的存储方式和特点不同。 数组是一种连续的内存存储方式,可以快速访问任何一个元素。但在插入和删除元素时,需要移动大量元素,效率很低,因此不适合插入和删除操作频繁的情况。 链表是一种非连续的内存存储方式,每个元素存储了下一个元素的地址,因此可以快速插入和删除元素。但访问…

    Java 2023年5月26日
    00
  • Java并发工具合集JUC大爆发!!!

    并发工具类 通常我们所说的并发包也就是java.util.concurrent(JUC),集中了Java并发的各种工具类, 合理地使用它们能帮忙我们快速地完成功能 。 作者: 博学谷狂野架构师 GitHub:GitHub地址 (有我精心准备的130本电子书PDF) 只分享干货、不吹水,让我们一起加油!? 1. CountDownLatch CountDown…

    Java 2023年4月18日
    00
  • java Hibernate save()与persist()区别

    Java中的Hibernate框架是一种ORM(Object-Relational Mapping)框架,它在数据库和Java对象之间建立了一种映射关系。在Hibernate中,我们可以使用save()和persist()方法来将Java对象持久化到数据库中。然而,这两个方法之间存在一些细微的区别,下面我们来详细讲解一下。 Hibernate save()方…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部