spring boot(学习笔记第十八课)

news2024/9/23 13:16:51

spring boot(学习笔记第十八课)

  • Spring boot的定时任务和Quartz

学习内容:

  • Spring boot的定时任务
  • Spring boot的Quartz

1. Spring boot的定时任务

  1. 定义定时任务
    • 加入必要的依赖
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
      
    • 在主类里面让scheduling生效
      @SpringBootApplication
      @EnableScheduling
      public class DemoApplication {
      
    • 定义component,测试scheduling task
      @Component
      public class ScheduledJob {
          @Scheduled(fixedDelay = 1000)
          public void fixedDelay() {
              System.out.println("fixedDelay(1000ms):" + new Date());
          }
      
          @Scheduled(fixedRate = 2000)
          public void fixRate() {
              System.out.println("fixedRate(2000):" + new Date());
          }
      
          @Scheduled(initialDelay = 1000, fixedRate = 2000)
          public void initialDelay() {
              System.out.println("initialDelay(1000),fixedRate(2000):" + new Date());
          }
      
          @Scheduled(cron = "0 * * * * ?")
          public void cron() {
              System.out.println("cron(0 * * * * ?):" + new Date());
          }
      }
      
    • 测试sheduled component效果
      在这里插入图片描述
    • cron表达式
      ‌Cron表达式是一种时间表达式,用于指定定时任务的时间、频率和间隔。它由6到7个字段组成,分别表示‌秒、‌分、时、‌日期、‌月份、‌星期和‌年份(可选)。Cron表达式的基本语法如下:
      
      秒(0-59)
      分(0-59)
      时(0-23)
      日期(1-31)
      月份(1-12或JAN-DEC)
      星期(0-7或SUN-SAT,其中0和7都表示周日)
      年份(可选,1970-2099)
      Cron表达式的字段之间用空格分隔,每个字段可以有特定的值、范围、通配符等来表示不同的时间模式。例如,*表示匹配所有可能的值,?用于日期和星期字段中的一个,表示不指定值,/用于指定数值的增量,如*/5表示每隔5个单位,-用于表示范围,如5-20表示从5到20的所有值。
      
      Cron表达式的高级用法包括使用通配符、时间增量以及将多个表达式组合在一起,以指定更复杂的时间表。例如,0 8-12,14-18 * * *表示每天的8:00到12:00和14:00到18:00之间执行任务。
      
      Cron表达式的应用广泛,包括在各种定时任务、日志清理、系统维护、数据备份等场景中使用,通过设置Cron表达式,可以自动化执行这些任务,提高系统效率和可靠性
      

2. Spring boot的Quartz

  1. Spring boot Quatz
    它是一个spring boot的一个作业调度的框架,创建简单和复杂调度作业。
    主要提供三种bean
    • JobDetail
    • Trigger
    • Scheduler
      接下来练习如果使用这三种bean来进行作业调度作业。
  2. 练习使用spring boot quartz
    • 加入必要的依赖
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-quartz</artifactId>
              </dependency>
      
    • 定义jobDetail的两个bean 注意第一个是bean,第二个就是单纯的java class
      @Component("MyFirstJob")
      public class MyFirstJob {
          public void sayHello(){
              System.out.println("MyFirstJob:" + new Date());
          }
      }
      
      第二个是单纯的java class
      @Data
      public class MySecondJob extends QuartzJobBean {
          private String name;
      
          @Override
          protected void executeInternal(JobExecutionContext context){
              System.out.println("hello:" + name + new Date());
          }
      
      }
      
    • 将两个jobBean进一步包装成jobDetail,并以bean的形式进行configuration
      @Configuration
      public class QuartzJobDetailConfig {
          @Bean("jobDetail1")
          public MethodInvokingJobDetailFactoryBean jobDetail1() {
              MethodInvokingJobDetailFactoryBean bean =
                      new MethodInvokingJobDetailFactoryBean();
              bean.setTargetBeanName("MyFirstJob");
              bean.setTargetMethod("sayHello");
              return bean;
          }
      
          @Bean("jobDetail2")
          JobDetailFactoryBean jobDetail2() {
              JobDetailFactoryBean bean =
                      new JobDetailFactoryBean();
              bean.setJobClass(MySecondJob.class);
              JobDataMap jobDataMap = new JobDataMap();
              jobDataMap.put("name", "finlay");
              bean.setJobDataMap(jobDataMap);
              return bean;
          }
      }
      
      至此,已经定义了两个jobDetailbean,分别是jobDetail1jobDetail2
    • 接下来,定义Triggerbean以及开启Scheduler,对Trigger进行调度。
      @Configuration
      public class QuartzConfig {
      
          @Autowired
          @Qualifier("jobDetail1")
          public MethodInvokingJobDetailFactoryBean _jobDetail1;
      
          @Autowired
          @Qualifier("jobDetail2")
          public JobDetailFactoryBean _jobDetail2;
      
          @Bean()
          SimpleTriggerFactoryBean simpleTriggerFactoryBean() {
              SimpleTriggerFactoryBean bean =
                      new SimpleTriggerFactoryBean();
              bean.setJobDetail(_jobDetail1.getObject());
              bean.setRepeatCount(3);
              bean.setStartDelay(1000);
              bean.setRepeatInterval(2000);
              return bean;
          }
      
          @Bean
          CronTriggerFactoryBean cronTriggerFactoryBean() {
              CronTriggerFactoryBean bean =
                      new CronTriggerFactoryBean();
              bean.setJobDetail(_jobDetail2.getObject());
              bean.setCronExpression("* * * * * ?");
              return bean;
          }
          @Bean
          SchedulerFactoryBean schedulerFactoryBean(){
              SchedulerFactoryBean bean =
                      new SchedulerFactoryBean();
              SimpleTrigger simpleTrigger =
                      simpleTriggerFactoryBean().getObject();
              CronTrigger cronTrigger =
                      cronTriggerFactoryBean().getObject();
              bean.setTriggers(simpleTrigger,cronTrigger);
              return bean;
          }
      
      }
      
  3. 启动上面的spring boot quartz
    在这里插入图片描述

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

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

相关文章

STM32 —— TIM(基本定时器)详解_stm32的tim

STM32 —— TIM&#xff08;基本定时器&#xff09;详解_stm32的tim 一、定时器简介 STM32F1 系列中&#xff0c;除了互联型的产品&#xff0c;共有 8 个定时器&#xff0c;分为基本定时器&#xff0c;通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向…

ID3算法详解:构建决策树的利器

目录 引言 ID3算法概述 算法基础 信息熵 ​编辑 信息增益 ID3算法步骤 决策树 概念: 核心&#xff1a; 节点 1. 根节点 2. 非叶子节点 3. 叶子节点 引言 在机器学习领域&#xff0c;决策树是一种非常流行的分类和回归方法。其中&#xff0c;ID3算法作为决策树算法…

干货分享 | TSMaster—RP1210模块使用指南

RP1210是由技术和维护委员会&#xff08;TMC&#xff09;编写的一种建议性实践。RP1210用于对重型车辆射频相关的&#xff08;主要针对&#xff09;电子控制单元&#xff08;ECU&#xff09;进行二次编程和分析。本文主要针对TSMaster—RP1210模块的操作进行详细介绍。 本文关…

【CANoe使用大全】——在线回放数据

&#x1f64b;‍♂️【CANoe使用大全】系列&#x1f481;‍♂️点击跳转 文章目录 1.概述2.创建回灌节点3.加载回灌数据 1.概述 在外面测试过程中经常会遇到一些故障场景&#xff0c;需要采集这些时刻的故障场景log&#xff0c; 回灌到程序中复现问题。 下面主要介绍数据的在…

【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思?

IPC-A-610标准对每个级别产品均给出四种验收条件&#xff1a;目标、可接受、缺陷或制程警示条件。 目标条件 是指近乎完美/首选的情形&#xff0c;然而这是一种理想而非总能达到的情形&#xff0c;且对于保证组件在使用环境下的可靠性并非必要的情形。 比如4.3.2节中连接器插针…

R8;RRRRRRRR;穿膜肽R8;八聚精氨酸;148796-86-5

【穿膜肽R8简介】 穿膜肽R8&#xff0c;也称为八聚精氨酸&#xff08;Octa-arginine&#xff09;&#xff0c;是一种由八个精氨酸残基组成的细胞穿透肽&#xff08;CPP&#xff09;。R8具有正电荷丰富的侧链&#xff0c;能够有效地与细胞膜上的负电荷相互作用&#xff0c;从而促…

优化电商客服满意度与复盘管理:AI质检技术的深度应用与策略

Hi~这里是ProXiao 文章参考&#xff1a;晓观点 《如何利用AI质检提升电商客服满意度&#xff0c;优化分析复盘管理环节&#xff1f;》 在当前电子商务迅猛发展的背景下&#xff0c;客户服务质量作为衡量店铺综合竞争力的重要指标之一&#xff0c;其优劣直接关联到服务类数据评分…

Docker图形化管理工具DockerUI

1、DockerUI 轻量级图形页面管理之DockerUI 2、查看dockerui镜像 [rootlocalhost ~]# docker search dockerui 3、下载dockerui镜像 [rootlocalhost ~]# docker pull abh1nav/dockerui #选择喜欢的dockerui风格镜像下载 4、启动dockerui容器 [rootlocalhost ~]# docker r…

Python经典书籍有哪些?来看看你看过哪几本

Python 基础 1.《Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09;》 本书是针对所有层次Python读者而作的Python入门书&#xff0c;让你可以快速学会Python编程&#xff0c;通过这本书&#xff0c;你将会学到各种Python库和工具(NumPy&#xff0c;Pygal等)…

C/C++控制台贪吃蛇游戏的实现

&#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&#xff0c;后期持续更新系列文章 &#x1f680;如果有错误感谢请大家批评指出&#xff0c;及时修改 &#x1f680;感谢大家点赞&#x1f44d;收藏⭐评论✍ 一、…

(第三期)书生大模型实战营——OpenXLab部署InternLM2实践——上传模型

OpenXLab 部署 InternLM2 实践指南 上传模型 初始化git设置 # install git sudo apt-get update sudo apt-get install git# install git lfs sudo apt-get update sudo apt-get install git-lfs# use git install lfs git lfs installOpenXLab 使用你在平台的用户名作为 Git…

【初阶数据结构】算法复杂度

目录 一、算法效率 1.1 为什么要衡量算法的好坏 1.2 算法的复杂度 1.3 复杂度在校招中的考察 二、时间复杂度 2.1 时间复杂度的概念 Func1 执行的基本操作次数 &#xff1a; 2.2 大O的渐进表示法 常见复杂度对比 一般算法常见的复杂度如下&#xff1a; ​编辑 2.3常…

SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧

SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧 SearXNG 是一个免费的互联网元搜索引擎,整合了各种搜索服务的结果。用户不会被跟踪,也不会被分析。 github地址:https://github.com/searxng/searxng 项目地址:https://docs.searxng.org/ 公…

尚品汇-网关过滤用户请求、登录流程(三十五)

目录&#xff1a; &#xff08;1&#xff09;用户认证与服务网关整合 &#xff08;2&#xff09;server-gateway网关配置 &#xff08;3&#xff09;在服务网关中判断用户登录状态 &#xff08;4&#xff09;登录流程 &#xff08;1&#xff09;用户认证与服务网关整合 实…

一对一私密发送分班结果,就用易查分

暑假即将结束&#xff0c;老师们又要开始忙碌起来&#xff0c;其中一项重要任务就是搭建一个分班信息查询系统。对于家长和学生来说&#xff0c;简直就是神器&#xff0c;因为它能提供快速便捷的查询服务。 想象一下&#xff0c;家长和学生通过扫描二维码&#xff0c;就能轻松…

【鸿蒙学习】HarmonyOS应用开发者基础 - 认证通过

考试时间&#xff1a;2024-08-20 22:00 考试结果&#xff1a;成功&#xff08;99分&#xff09; 一、开局叨叨 HarmonyOS应用开发者基础认证&#xff0c;不完美通过&#xff0c;考试分数99分&#xff0c;为啥不考100分。主要是当时没找到&#xff0c;后面通过录屏看了一下&am…

2024“华为杯”第二十一届中国研究生数学建模竞赛2004-2023华为杯数学建模优秀论文(见文末)

2024“华为杯”第二十一届中国研究生数学建模竞赛&2004-2023华为杯数学建模优秀论文&#xff08;见文末&#xff09; 各研究生培养单位&#xff1a; 中国研究生数学建模竞赛&#xff08;以下简称“竞赛”&#xff09;是教育部学位管理与研究生教育司指导&#xff0c;中国学…

TUIKit:chat-uikit-vue在微信中上传图片的一个bug

一、问题描述 今天使用腾讯IM的TUIKIT示例工程&#xff1a;https://github.com/TencentCloud/chat-uikit-vue.git &#xff0c;发现在Android设备的微信里打开&#xff0c;选择相册的图片进行编辑后发送会失败&#xff1a; 二、问题排查 由于在微信中不好排查问题&#xff…

docker 安装minio并配置https域名访问

一、准备目录 mkdir -p /home/minio/data/home/minio/config/home/minio/config/certs/二、下载域名证书&#xff0c;注意要Apache的 注意.key的换成 private.key&#xff0c;public.crt换成 public.crt&#xff0c;然后将这两个文件放到/home/minio/config/certs/目录下 三、…

微信小程序开发工具最新版版下载

最近&#xff0c;下载微信小程序开发工具的时候&#xff0c;因为网络问题&#xff0c;发现不能够直接下载&#xff0c;需要使用代理才行 如果你也遇到这个问题&#xff0c;可以通过网盘进行下载。 一、官网下载 下载地址&#xff1a;https://developers.weixin.qq.com/miniprog…