定时任务组件Quartz

发布时间:2024年01月23日

Quartz介绍

????????Quartz 是一个功能丰富的开源作业调度库,几乎可以集成到任何 Java 应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz 可用于创建简单或复杂的计划,以执行数十、数百甚至数万个作业;其任务被定义为标准 Java 组件的作业,这些组件几乎可以执行您可以对它们进行编程执行的任何操作。Quartz Scheduler 包含许多企业级功能,例如对 JTA 事务和集群的支持。

Quartz框架的使用思路

1)job - 任务 - 你要做什么事?

2)Trigger - 触发器 - 你什么时候去做?

3)Scheduler - 任务调度 - 你什么时候需要去做什么事?

SpringBoot整合Quartz框架

?1 添加Quartz依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>

2 自定义一个Job

/**
* 任务类
*/
@Component
public class JobDemo {
    public void priTime(){
        System.out.println("现在是:"+new Date());
    }
}

3 编写quartz配置类

@Configuration
public class QuartzConfig {

    @Bean//job:干什么事
    public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(
            QuartzDemo quartzDemo){
        MethodInvokingJobDetailFactoryBean JobDetailFactoryBean = new 
            MethodInvokingJobDetailFactoryBean();
        JobDetailFactoryBean.setTargetObject(clearImgJob);
        JobDetailFactoryBean.setTargetMethod("printTime");
        return JobDetailFactoryBean;
    }

    @Bean//trigger:什么时候
    public CronTriggerFactoryBean cronTriggerFactoryBean(
        MethodInvokingJobDetailFactoryBean JobDetailFactoryBean){
        CronTriggerFactoryBean triggerFactoryBean = new CronTriggerFactoryBean();
        triggerFactoryBean.setCronExpression("0/1 * * * * ?");
        triggerFactoryBean.setJobDetail(JobDetailFactoryBean.getObject());
        return triggerFactoryBean;
    }

    @Bean//scheduler:什么时候干什么事
    public SchedulerFactoryBean schedulerFactoryBean(
        CronTriggerFactoryBean triggerFactoryBean){
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        schedulerFactoryBean.setTriggers(triggerFactoryBean.getObject());
        return schedulerFactoryBean;
    }
}

4 编写启动类

@SpringBootApplication
public class QuartzTestApp {

    public static void main(String[] args) {
        SpringApplication.run(QuartzTestApp.class,args);
    }
}

5 结果:

运行启动类,观察控制台,可以发现每隔1秒会输出一次,说明每隔1秒自定义 Job被调用一次。?

文章来源:https://blog.csdn.net/m0_74007708/article/details/135777951
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。