0
点赞
收藏
分享

微信扫一扫

String类常用方法总结

悬灸人雪洋 2023-11-22 阅读 46

声明

概念

quartz有四大核心概念,分别为:

1 工作(Job):用于定义具体执行的工作,通常写业务处理的地方。
2 工作明细(JobDetail):用于描述定时工作相关的信息
3 触发器(Trigger):用于描述触发工作的规则,通常使用corn表达式定义调度规则
4 工作调度器(Scheduler):描述了工作明细与触发器的对应关系

引入依赖

直接在pom里面引入依赖

 <!--  quartz定时任务      -->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-quartz</artifactId>
      <version>2.3.2.RELEASE</version>
  </dependency>

引入完之后,哪怕什么也不写,重启项目的时候就会发现控制台已经有quartz相关的日志了

在这里插入图片描述

创建Job

创建一个job类用来定义任务逻辑

在这里插入图片描述

代码如下:

package com.quartz.job;

import org.quartz.JobExecutionContext;
import org.springframework.scheduling.quartz.QuartzJobBean;

/**
 * @description: quartz定时任务
 * @author: wyh
 * @date: 2023-11-22 10:04
 **/

/**
 * 1.创建定时任务类 继承QuartzJobBean抽象类,实现其抽象方法executeInternal,在此方法指定具体业务
**/
public class MyQuartzJob extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext context) {
        // 业务处理
        System.out.println("Quartz running....");
    }
}

创建QuartzConfig

创建quartz定时任务配置类,在该类里面有两个地方需要处理,分别是任务明细的构造和触发器的构造

在这里插入图片描述

绑定工作任务并构造任务明细

通过JobDetail绑定对应的job任务

   /**
     * 绑定工作明细
     **/
    @Bean
    public JobDetail jobDetail(){
        // 绑定具体的任务类并调用storeDurably进行持久化,最后build构建 newJob中的参数就是具体的工作类
        return JobBuilder.newJob(MyQuartzJob.class).storeDurably().build();
    }

设置触发频率并构造触发器

通过cron表达式配置执行频率,然后指定工作明细

cron 表达式在线生成:在线Cron表达式生成器

标题

   /**
     * 创建触发器
     **/
    @Bean
    public Trigger quartzTrigger(){
       // 设置触发频率 参数: 秒 分 时 日 月 星期几(0/x表示x秒执行一次)
        ScheduleBuilder<CronTrigger> scheduleBuilder = CronScheduleBuilder.cronSchedule("0/1 * * * * ?");
        // 创建触发器并绑定对应的工作明细和频率  forJob指定的是具体的方法名,withSchedule就是上面设置的频率
        return  TriggerBuilder.newTrigger().forJob(jobDetail()).withSchedule(scheduleBuilder).build();
    }

完整代码如下:

package com.quartz.config;

import com.quartz.job.MyQuartzJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @description: quartz定时任务配置类
 * @author: wyh
 * @date: 2023-11-22 10:08
 **/

@Configuration
public class QuartzConfig {
    /**
     * 2.绑定工作明细
     **/
    @Bean
    public JobDetail jobDetail(){
        // 绑定具体的任务类并调用storeDurably进行持久化,最后build构建 newJob中的参数就是具体的工作类
        return JobBuilder.newJob(MyQuartzJob.class).storeDurably().build();
    }
    /**
     * 3.创建触发器
     **/
    @Bean
    public Trigger quartzTrigger(){
       // 设置触发频率 参数: 秒 分 时 日 月 星期几(0/x表示x秒执行一次)
        ScheduleBuilder<CronTrigger> scheduleBuilder = CronScheduleBuilder.cronSchedule("0/1 * * * * ?");
        // 创建触发器并绑定对应的工作明细和频率  forJob指定的是具体的方法名,withSchedule就是上面设置的频率
        return  TriggerBuilder.newTrigger().forJob(jobDetail()).withSchedule(scheduleBuilder).build();
    }
}

查看效果

启动项目,查看结果。

在这里插入图片描述

举报

相关推荐

0 条评论