SpringBoot日常:@Scheduled实现服务启动时执行一次

news2024/11/15 11:06:17

文章目录

    • 一、@Scheduled详解
    • 二、逻辑实现
      • 1、创建定时任务逻辑方法
      • 2、新建一个启动执行类
    • 三、测试结果

说到定时任务,我们应该会想起@Scheduled,Quartz以及XXL-JOB,但是有的单体服务或者小项目,为了方便快捷,可能会直接使用@Scheduled去实现异步任务。因此,从而延伸出本文的主题需求。

当项目中使用@Scheduled,如何在项目启动的时候让指定的异步任务提前执行一次?

一、@Scheduled详解

@Scheduled注解支持多个参数,用于灵活控制任务执行时间

  • cron:Cron表达式,可以精准控制秒、分、小时、日、月、周等
    在这里插入图片描述
  • zone:接收一个时区,比如我们一般使用的时区Asia/Shanghai,该字段我们一般留空。
  • fixedDelay:上一次执行完毕时间点之后多长时间再执行。如@Scheduled(fixedDelay = 5000)
  • fixedDelayString:与 fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符,如@Scheduled(fixedDelayString = “5000”)
  • fixedRate:上一次开始执行时间点之后多长时间再执行,如@Scheduled(fixedRate = 5000)
  • fixedRateString:与 fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
  • initialDelay:第一次延迟多长时间后再执行,如第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次@Scheduled(initialDelay=1000, fixedRate=5000)
  • initialDelayString:与 initialDelayString 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

二、逻辑实现

1、创建定时任务逻辑方法

/**
 * @Author 码至终章
 * @Version 1.0
 */
@Component
public class ScheduledTest {

    @Scheduled(cron = "* 1 * * * ?")
    public void task1() throws Exception{
        System.out.println("task1 执行: " + Thread.currentThread() + "-" + DateTime.now());
    }
}

2、新建一个启动执行类

该类主要在启动时手动调用指定的任务方法

/**
 * @Author 码至终章
 * @Version 1.0
 */
@Component
public class StartupTasks {

    private final ScheduledTest scheduledTasks;

    public StartupTasks(ScheduledTest scheduledTasks) {
        this.scheduledTasks = scheduledTasks;
    }

    @PostConstruct
    public void startUp() {
        try {
            System.out.println("服务启动执行任务");
            scheduledTasks.task1();
        }catch (Exception e){
			e.printStackTrace();
        }
    }
}

注:启动类记得自己加上@EnableScheduling,定时任务 才会执行,当然这个不影响本文的逻辑测试

三、测试结果

服务启动后,查看打印信息
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

充电宝哪个牌子公认质量好?哪家充电宝好用?4款口碑好充电宝

在如今这个电子设备不离手的时代,充电宝成为了我们生活中的必备品。然而,面对市场上琳琅满目的充电宝品牌和型号,选择一款质量可靠、性能出色的充电宝并非易事。大家都在问:充电宝哪个牌子公认质量好?哪家充电宝好用&a…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意:B树中B不是代表二叉树(binary),而是代表平衡(balance),因为B树是从最早的平衡二叉树演化而来,但是B树不是一个二叉树。 B树的高度一般在2~…

uniapp——银行卡号脱敏

样式 代码 {{bankNumber.replace(/(\d{4})(?\d)/g, "●●●● ").replace(/(\d{2})(?\d{2}$)/, " $1")}} 将银行卡号按照每四位一组的方式进行处理,前面的变成 剩下的正常显示

JustAuth实现多个钉钉扫码登录

需求: 实现多个钉钉组织的用户绑定和扫码登录。 JustAuth框架实现钉钉扫码登录用到的dingTalk接口: https://oapi.dingtalk.com/connect/qrconnecthttps://oapi.dingtalk.com/connect/oauth2/sns_authorize根据sns临时授权码获取用户信息 https://oap…

websockt初始化,创建一个webSocket示例

写文思路: 以下主要从几个方面着手写websocket相关,包括以下:什么是webSocket,webSocket的优点和劣势,webSocket工作原理,webSocket握手示例,如何使用webSocket(使用webSocket的一个示例)&#…

进度条提示-在python程序中使用避免我误以为挂掉了

使用库tqdm 你还可以手写一点,反正只要是输出点什么东西都可以; Demo from chatgpt import time from tqdm import tqdm# 示例函数,模拟长时间运行的任务 def long_running_task():total_steps 100for step in tqdm(range(total_steps), …

平安养老险安徽分公司“7·8保险宣传”走进企业

近日,平安养老保险股份有限公司(以下简称“平安养老险”)安徽分公司以“78全国公众宣传日”“保险,让每一步前行更有底气”为主题,走进某大型企业开展消费者权益保护专题教育宣传活动。 本次活动旨在向企业员工普及金…

【AI技术的未来之路】从模型到应用,跨越超级应用陷阱,迈向个性化智能体

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 ​ 目录 引言 一、AI技术应用场景探索: 二、避免超级应用陷阱的策略: 三、个…

windows驱动开发基础-环境篇

前言 Windows上无论是用户模式下还是内核模式下,有关驱动的开发都有可能影响系统稳定性,所以我们首先要准备一个专用的测试环境,可以使用VM等虚拟机方便环境修复和还原 测试模式 开启测试模式:cmd 命令 bcdedit /set testsign…

Websocket 替代方案:如何使用 Firestore 监听实时事件

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 ​在现代 Web 开发中,实时更新功能对于许多应用程序(如聊天应用、协作工具和在线游戏)都是必不可少的。虽然 WebSocket 是一种常用的实时通信技术,但 Google 的 Firestore 也提供了一种强大的替代方案,使得实时监听变得…

苍穹外卖前后端搭建

文章目录 参考开发环境搭建前端环境搭建1、 前端工程基于 nginx2、启动nginx,访问测试后端环境搭建1、从资料中找到后端初始工程:2、用 IDEA 打开初始工程,了解项目的整体结构:数据库环境搭建前后端联调nginx反向代理和负载均衡1、nginx反向代理2、nginx 负载均衡完善登录功…

线程交互现象

线程交互现象 小明对自家的狗子有个规定,就是在狗狗还没吃完的时候,可以继续给他加饭 不好的解决方式 狗狗感觉一千年没吃饭了,狼吞虎咽起来,最后饭只剩下最后一点点,吃饭线程中使用while循环判断是否是1,…

数字人直播时代来了!数字人直播系统搭建,AI虚拟数字人直播系统源码部署

数字人直播系统这是一种利用人工智能技术,实现自动化生成真实人物直播销售商品的综合性解决方案。 一、目前数字人直播支持的平台: 抖音、快手、视频号、小红书、淘宝、支付宝生活号、TikTok、阿里国际站等。 技术栈 数据库:mysql5.7 技术搭…

第一个ffmpeg程序

在进行使用ffmpeg进行编写程序时,首先要记得进行注册设备(avdevice_register_all ),程序运行时,只需要注册一次就可以 avdevice_register_all 是 FFmpeg 多媒体处理库中的一个函数,其作用是注册所有可用的音…

仕考网:公务员体检对视力有要求吗?

公务员招聘过程中的体检标准对视力有具体要求,根据不同的岗位职责有所差异。通常情况下,如果申请者双眼经过矫正后视力均低于4.8(小数视力0.6),则会被视为不合格。 对于某些特殊岗位,如J察等,单侧裸眼视力若低于4.8也…

非升即走保命刊:审稿速度堪比“水刊”的1区Top,国人优势大,无爆雷风险,2个月可录!

本周投稿推荐 SCI • 地质遥感类,1.0-2.0(34天沾边可录) • CCF推荐,4.5-5.0(2天见刊) • 生物医学制药类(2天逢投必中) EI • 各领域沾边均可(2天录用&#xff09…

输入框只能输入数字

type"number" <el-input type"number" v-model.number"expenditure" placeholder"请输入"> </el-input> /* 普通IE浏览器 样式清除 */ input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {-webkit-a…

大模型备案全网最详细流程说明【附附件】

下图为最新的直至第五批深度合成服务算法备案信息的公告 根据目前公开的国内大模型算法备案统计来看&#xff0c;首批境内深度合成服务算法备案清单&#xff0c;总共通过了五批。 以第二批举例&#xff0c;境内深度合成服务算法备案清单&#xff0c;总共通过110家&…

如何将overleaf的latex格式转换为word

安装pandoc https://pandoc.org/installing.html 下载安装后&#xff0c;打开windows shell&#xff0c;测试是否安装成功&#xff1a; pandoc -v使用代码转换 进入你防止latex的文件夹&#xff0c;运行以下命令&#xff1a; pandoc -o output.docx -t docx .\main.tex其中…

Java基础之Stringjoiner

Stringjioiner的概述 StringJoiner跟StringBuilder一样&#xff0c;也可以看成是一个容器&#xff0c;创建之后里面的内容是可变的。作用:提高字符串的操作效率&#xff0c;而且代码编写特别简洁&#xff0c;但是目前市场上很少有人用。 Stringjoiner的构造方法 Stringjoiner…