SpringBoot整合quartz!!!

 Quartz框架的使用思路

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

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

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

SpringBoot整合quartz!!!_第1张图片

 Spring整合quartz

导入架包:




    org.springframework.boot
    spring-boot-starter-quartz
    2.3.2.RELEASE

spring配置文件:




    
    

    
    
        
        
    

    
    
        
        
    

    
    
        
            
                
                
            
        
    

Corn表达式

Cron 表达式是一个字符串,分为 6 7 个域,每一个域代表一个含义

Cron 有如下两种语法格式:

(1)Seconds Minutes Hours Day Month Week Year

(2)Seconds Minutes Hours Day Month Week

一、结构

corn 从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份

二、cron表达式

SpringBoot整合quartz!!!_第2张图片

字段含义:

SpringBoot整合quartz!!!_第3张图片

示例:

SpringBoot整合quartz!!!_第4张图片

?

“?”字符只在日期域和星期域中使用。它被用来指定非明确的值

例如:

         想在每月的20日触发调度0 0 0 20 * ?,而且只能使用如下写法:0/1 0 0 20 * ?。其中最后一位只能用?,而不能使        *,因为*表示不管星期几都会触发恰好与20冲突。

 SpringBoot整合quartz:

将配置文件转换为@Bean注解:(配置类QuartzConfig)

/*
 * Copyright (c) 2020, 2024,  All rights reserved.
 *
 */
package com.by.config;

import com.by.job.JobDome;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

/**
 * 

Project: ican_parent - QuartzConfig

*

Powered by scl On 2024-01-23 09:58:42

*

描述:

* * @author 孙臣龙 [[email protected]] * @version 1.0 * @since 17 */ @Configuration public class QuartzConfig { /** * job:要做什么事情 * * @param jobDome * @return */ @Bean public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(JobDome jobDome) { MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean(); jobDetailFactoryBean.setTargetObject(jobDome); jobDetailFactoryBean.setTargetMethod("showTime"); return jobDetailFactoryBean; } /** * trigger:什么时候去做 * * @param jobDetailFactoryBean * @return */ @Bean public CronTriggerFactoryBean cronTriggerFactoryBean(MethodInvokingJobDetailFactoryBean jobDetailFactoryBean) { CronTriggerFactoryBean triggerFactoryBean = new CronTriggerFactoryBean(); triggerFactoryBean.setJobDetail(jobDetailFactoryBean.getObject()); triggerFactoryBean.setCronExpression("*/1 * * * * ?"); return triggerFactoryBean; } /** * scheduler:什么时候去做什么事情 * * @param triggerFactoryBean * @return */ @Bean public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean triggerFactoryBean) { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setTriggers(triggerFactoryBean.getObject()); return schedulerFactoryBean; } }

 实例引入:(要做的事情job)

/*
 * Copyright (c) 2020, 2024,  All rights reserved.
 *
 */
package com.by.job;

import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 

Project: ican_parent - JobDome

*

Powered by scl On 2024-01-23 10:03:47

*

描述:

* * @author 孙臣龙 [[email protected]] * @version 1.0 * @since 17 */ @Component public class JobDome { public void showTime(){ System.out.println("倒计时:"+new Date()); } }

你可能感兴趣的:(spring,boot,后端,java,quartz)