在 Spring Boot 中实现定时任务,通过 Spring Task Scheduling 来完成

Spring Boot 中实现定时任务,可以通过 Spring Task Scheduling 来轻松完成。Spring 提供了多种方法来调度任务,其中使用 @Scheduled 注解是最常见且简单的方式。

步骤:在 Spring Boot 中实现定时任务

1. 启用定时任务

首先,确保在 Spring Boot 应用的主类或配置类中启用定时任务功能:

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

@SpringBootApplication
@EnableScheduling  // 启用定时任务
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2. 创建定时任务

使用 @Scheduled 注解来定义定时任务。在类中编写一个方法并使用 @Scheduled 注解,指定任务的执行频率。

2.1 使用固定频率执行

例如,每隔 5 秒执行一次任务:

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

@Component
public class ScheduledTask {

    @Scheduled(fixedRate = 5000)  // 每隔 5 秒执行一次
    public void performTask() {
        System.out.println("执行定时任务: " + System.currentTimeMillis());
    }
}
2.2 使用固定延迟执行

如果希望任务在上一个任务结束后延迟一段时间再执行:

@Scheduled(fixedDelay = 5000)  // 上次执行完后延迟 5 秒
public void performDelayedTask() {
    System.out.println("执行定时任务: " + System.currentTimeMillis());
}
2.3 使用 Cron 表达式

Cron 表达式可以更加灵活地控制任务的执行时间。例如,每天凌晨 1 点执行任务:

@Scheduled(cron = "0 0 1 * * ?")  // 每天凌晨1点执行
public void performCronTask() {
    System.out.println("执行 Cron 定时任务:" + System.currentTimeMillis());
}

3. 配置线程池(可选)

为了避免多个任务同时执行时占用过多的资源,可以配置线程池来管理定时任务。

java复制代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

@Configuration
public class TaskSchedulerConfig {

    @Bean
    public ThreadPoolTaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(5);  // 设置线程池大小
        scheduler.setThreadNamePrefix("scheduled-task-");
        scheduler.setDaemon(true);  // 守护线程
        return scheduler;
    }
}

4. 配置任务执行日志(可选)

你可以使用 @Scheduled 注解的 zone 属性来指定执行任务时的时区,并利用日志记录任务执行的时间和状态。例如:

@Scheduled(cron = "0 0 1 * * ?", zone = "GMT+8")
public void logTaskExecution() {
    System.out.println("任务执行时间:" + System.currentTimeMillis());
}

5. 常见属性解释

  • fixedRate: 任务执行的间隔时间(单位:毫秒),任务开始时刻计算。
  • fixedDelay: 上一个任务完成后再延迟指定时间执行。
  • cron: 使用 Cron 表达式来指定任务的执行时间。Cron 表达式允许设置具体的执行时间(例如每天、每小时等)。
  • zone: 设置任务的时区,默认为系统时区。

通过以上步骤,你可以轻松在 Spring Boot 中实现定时任务。无论是简单的定时任务,还是复杂的 Cron 表达式调度,Spring Boot 都提供了灵活的方式来满足需求。如果有其他需求,例如异步执行任务或任务失败重试等,可以进一步扩展和配置。

发布者:myrgd,转载请注明出处:https://www.object-c.cn/4581

Like (0)
Previous 2024年11月26日 下午12:09
Next 2024年11月26日 下午12:16

相关推荐

  • PHM技术:一维信号时序全特征分析(统计域/频域/时域)信号处理

    PHM(Prognostics and Health Management,预测与健康管理)技术中的一维信号时序特征分析,旨在从信号中提取与设备健康状态相关的多种特征。以下是针对统计域、频域和时域特征分析的详细介绍和常见方法。 1. 时域特征分析时域特征直接从原始信号提取,描述信号的统计特性或时间行为。这些特征反映信号的幅值、变化趋势和波形形状。1.1 常用…

    2024年11月28日
    00
  • 最新 pragma solidity 0 . 5 . 10 报错原因解决

    pragma solidity 0.5.10 会报错的原因通常与当前使用的 Solidity 编译器版本不支持该指定版本的语法有关。要解决此问题,需要确保使用正确的编译器版本或调整代码中的版本声明。 问题分析指定的版本过旧: Solidity 0.5.10 是较旧的版本,而现代的工具链(如 Truffle 或 Hardhat)可能默认安装更新版本的编译器。不…

    2024年11月27日
    00
  • 在 VSCode 中安装和配置 C/C++ 开发环境及调试功能

    在 VSCode 中安装和配置 C/C++ 开发环境及调试功能,涉及几个关键步骤:安装 VSCode、安装 C/C++ 编译器、安装 C/C++ 扩展、配置调试环境等。下面是一个详细的保姆级教程,带你一步步完成配置。1. 安装 VSCode首先,你需要安装 Visual Studio Code(简称 VSCode)。可以通过以下步骤完成安装:访问 Visua…

    2024年11月29日
    00
  • 塞风加速器下载安装教程页(页脚安装包)

    Ps iphon 是一款用于绕过互联网审查和访问被封锁网站的免费工具。它通过 VPN、SSH 或 HTTP 代理技术实现翻墙功能。以下是 Ps iphon 在不同平台上的安装教程。 Ps iphon 安装教程 1. 在 Android 上安装 Ps iphon 2. 在 Windows 上安装 Ps iphon 3. 在 iOS 上安装 Psiphon iO…

    2024年12月27日
    00
  • java中使用 Arrays.asList()新增报错问题解决方法

    Arrays.asList() 返回的是一个固定大小的列表。如果你尝试使用该列表进行添加、删除等修改操作,会抛出 UnsupportedOperationException 异常。这是因为 Arrays.asList() 返回的列表背后是一个数组,它的大小是固定的,不能进行动态修改。解决方法使用 ArrayList 包装 Arrays.asList() 的结…

    2024年12月2日
    00
  • 在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰的方法

    在 GitHub 上提交 PR(Pull Request)是一种将代码变更合并到主分支或其他目标分支的常见方式。在同时处理多个 PR 时,需要使用独立的分支来避免相互干扰。以下是详细教程: 步骤一:单个 PR 的提交流程Fork 仓库如果没有直接访问权限,先 fork 原仓库到自己的 GitHub 帐号。在 fork 的仓库上操作自己的代码。克隆仓库到本地 …

    2024年11月26日
    00
  • 使用 Flutter 实现酷炫的粒子动画,可以通过 Shader 来提升效果

    使用 Flutter 实现酷炫的粒子动画,可以通过 Shader 来提升效果。这种方法结合 Flutter 的强大绘图功能和 GLSL 的灵活性,可以创造出高性能且自定义程度极高的视觉效果。以下是实现的基本步骤和核心代码: 核心思想使用 Flutter 的 CustomPainter 绘制粒子。通过 FragmentProgram (GLSL Shader)…

    2024年12月2日
    00
  • 远程仓库 ,从GitHub拉取代码失败的解决办法

    从GitHub拉取代码失败通常由以下几种原因引起:网络问题、认证失败、远程仓库配置错误等。以下是常见的失败场景及解决办法。 1. 网络问题症状连接超时。报错如:fatal: unable to access ‘https://github.com/…’: Failed to connect to github.com port 443: Connecti…

    2024年11月28日
    00
  • 在进行 Java 单元测试时,遇到找不到类名的错误

    在进行 Java 单元测试时,遇到找不到类名的错误,通常是由于以下几个原因引起的。下面是一些常见问题及其解决方法:1. 类路径(Classpath)问题最常见的原因是编译后的类文件没有正确地包含在类路径中,或者类文件没有被正确加载到测试框架中。要解决这个问题,确保以下几点:解决方法:确认类是否存在:首先确保测试类和目标类都已经编译,并且在正确的目录中。检查 …

    2024年11月28日
    00
  • 在 Windows 11 上使用 WSL2 安装 Ubuntu 子系统时,出现 “无法解析服务器的名称或地址” 错误

    在 Windows 11 上使用 WSL2 安装 Ubuntu 子系统时,出现 “无法解析服务器的名称或地址” 错误,通常与网络配置或 DNS 解析问题相关。以下是可能的解决方法:1. 检查 WSL2 网络配置WSL2 默认使用虚拟机进行网络连接,因此可能会出现网络配置问题。你可以尝试以下步骤修复:1.1 重启 WSL2首先,重启 W…

    2024年11月27日
    00
  • 使用 Redis 和 Spring Cache 实现基于注解的缓存功能

    Spring Cache 提供了一种简单的方法来通过注解对方法的返回结果进行缓存。结合 Redis,可以构建一个高效的分布式缓存解决方案。以下是详细实现步骤: 1. 引入必要的依赖在 pom.xml 文件中添加以下依赖(适用于 Spring Boot 项目): 2. 配置 Redis在 application.yml 或 application.proper…

    2024年12月1日
    00
  • 高性能 TongRDS 是一种分布式内存数据缓存中间件

    TongRDS 是一种分布式内存数据缓存中间件,旨在为高性能、高并发的应用场景提供快速的数据访问解决方案。类似于 Redis 或 Memcached,TongRDS 的核心功能围绕内存数据存储和分布式特性展开,同时可能具备特定的优化或扩展能力。 以下是 TongRDS 的可能特性和应用场景总结: 1. 核心特性 分布式缓存架构 高性能存储 灵活的数据模型 扩…

    2024年12月3日
    00
  • VMware Workstation 17 Pro 中安装 macOS 虚拟机

    在 VMware Workstation 17 Pro 中安装 macOS 虚拟机需要一些额外的步骤,因为 VMware 默认不支持直接安装 macOS 系统。以下是完整的教程,帮助你在 VMware 中成功安装 macOS。 一、准备工作 1. 所需资源 二、安装 VMware 并解锁 macOS 支持 1. 安装 VMware Workstation 2…

    2024年11月23日
    00
  • 在 Windows 上使用 PyCharm 进行远程开发并连接到 Spark 进行 PySpark 开发

    在 Windows 上使用 PyCharm 进行远程开发并连接到 Spark 进行 PySpark 开发,通常涉及以下几个步骤:1. 设置 PyCharm 环境首先,需要安装 PyCharm,并确保你使用的是专业版(Professional),因为它支持远程开发。确保 Python 已经安装,并配置好虚拟环境。2. 配置远程开发环境在 Windows 上使用…

    2024年11月27日
    00
  • Java Spring MVC 超详解介绍

    Spring MVC 是 Spring 框架中用于构建 Web 应用程序的模块,它采用了 MVC 模式(Model-View-Controller)。Spring MVC 的核心目标是将业务逻辑、数据层、以及展示层分离,使得代码清晰易维护。 Spring MVC 的架构 1. 核心组件 Spring MVC 工作流程 Spring MVC 核心注解 1. @…

    2024年11月21日
    00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信