码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 说说 Spring 定时任务如何大规模企业级运用


    Spring 定时任务简介

    Cloud Native

    定时任务是业务应用开发中非常普遍存在的场景(如:每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等), 解决方案很多 ,Spring 框架提供了一种通过注解来配置定时任务的解决方案,接入非常的简单,仅需如下两步:

    1. 在启动类上添加注解@EnableScheduling

    @SpringBootApplication
    @EnableScheduling  // 添加定时任务启动注解
    public class SpringSchedulerApplication {
      
        public static void main(String[] args) {
      
            SpringApplication.run(SpringSchedulerApplication.class, args);
        }
    }
    

    2. 开发定时任务 Bean 并配置相应的定时注解@Scheduled

    @Component
    public class SpringScheduledProcessor {
      
    
    
      /**
         * 通过Cron表达式指定频率或指定时间
         */
        @Scheduled(cron = "0/5 * * * * ?")
        public void doSomethingByCron() {
      
            System.out.println("do something");
        }
        
      /**
         * 固定执行间隔时间
         */
        @Scheduled(fixedDelay = 2000)
        public void doSomethingByFixedDelay() {
      
            System.out.println("do something");
        }
    
    
        /**
         * 固定执行触发频率
         */
        @Scheduled(fixedRate = 2000)
        public void doSomethingByFixedRate() {
      
            System.out.println("do something");
        } 
    }
    

    Spring 定时任务原理

    Cloud Native

    运行原理

    Spring 定时任务核心逻辑主要在 spring-context 中的 scheduling 包中,其主要结构包括:

    • 定时任务解析:通过 ScheduledTasksBeanDefinitionParser 对 XML 定义任务配置解析;也可通过 ScheduledAnnotationBeanPostProcessor对@Scheduled 注解进行任务解析(常见模式)。

    • 定时任务注册登记:上述解析获得的 Task 任务配置会被注册登记至 ScheduledTaskRegistrar 中以备运行使用。

    • 任务定时运行:完成所有任务注册登记后,会通过 TaskScheduler 正式地定时运行相关任务,底层通过 JDK 的 Scheduled

  • 相关阅读:
    软件工程理论与实践 (吕云翔) 第五章 面向对象方法与UML课后习题及其答案解析
    计算机组成原理 new07 真值和机器数 无符号整数 定点整数 定点小数 $\color{red}{Δ}$
    基于高阶微分器的无模型滑模控制器及其在自动电压调节器中的应用
    可控硅的两种触发方式:移相触发和过零触发
    DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(中)
    KT148A语音芯片下载过程的问题集锦 包含下载不了批量生产的说明
    目标检测算法 - YOLOv1
    python 对图片增加边框,logo贴图,获取图片exif参数,填写图片文本内容
    C语言之指针进阶篇(3)
    LAMP部署
  • 原文地址:https://blog.csdn.net/Candyz7/article/details/126883983
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号