Springboot Quartz定时任务的动态调度使用,实战详解

本文详细介绍了如何在Springboot中使用Quartz实现动态调度的定时任务,包括JobFactory、QuartzConfig的配置,以及创建、运行、修改、暂停、恢复和删除任务的方法。通过示例代码展示了如何创建自定义的Job类和启动监听器,以实现在项目启动时自动执行任务。此外,还提供了QuartzController,用于HTTP接口操作定时任务。
摘要由CSDN通过智能技术生成

return cronExpression;

}

public void setCronExpression(String cronExpression) {

this.cronExpression = cronExpression;

}

public String getJobName() {

return jobName;

}

public void setJobName(String jobName) {

this.jobName = jobName;

}

public String getJobGroup() {

return jobGroup;

}

public void setJobGroup(String jobGroup) {

this.jobGroup = jobGroup;

}

public String getTriggerName() {

return triggerName;

}

public void setTriggerName(String triggerName) {

this.triggerName = triggerName;

}

public String getTriggerGroup() {

return triggerGroup;

}

public void setTriggerGroup(String triggerGroup) {

this.triggerGroup = triggerGroup;

}

public String getDescription() {

return description;

}

public void setDescription(String description) {

this.description = description;

}

public JSONObject getData() {

return data;

}

public void setData(JSONObject data) {

this.data = data;

}

public Boolean getPauseStatus() {

return pauseStatus;

}

public void setPauseStatus(Boolean pauseStatus) {

this.pauseStatus = pauseStatus;

}

public Boolean getDeleteStatus() {

return deleteStatus;

}

public void setDeleteStatus(Boolean deleteStatus) {

this.deleteStatus = deleteStatus;

}

public Date getCreateTime() {

return createTime;

}

public void setCreateTime(Date createTime) {

this.createTime = createTime;

}

public Date getUpdateTime() {

return updateTime;

}

public void setUpdateTime(Date updateTime) {

this.updateTime = updateTime;

}

}

创建JobFactory.java (job实例工厂):

import org.quartz.spi.TriggerFiredBundle;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.config.AutowireCapableBeanFactory;

import org.springframework.scheduling.quartz.AdaptableJobFactory;

import org.springframework.stereotype.Component;

/**

  • @Author : JCccc

  • @CreateTime : 2020/3/21

  • @Description : 创建job实例工厂,使用默认的也许会出现spring的@Autowired 无法注入问题

**/

@Component

public class JobFactory extends AdaptableJobFactory {

@Autowired

private AutowireCapableBeanFactory beanFactory;

@Override

protected Object createJobInstance(TriggerFiredBundle bundle)

throws Exception {

Object jobInstance = super.createJobInstance(bundle);

//Job实例注入到Job工厂

beanFactory.autowireBean(jobInstance);

return jobInstance;

}

}

创建QuartzConfig.java (一些属性配置项):

import org.quartz.Scheduler;

import org.quartz.ee.servlet.QuartzInitializerListener;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.config.PropertiesFactoryBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import java.io.IOException;

import java.util.Properties;

/**

  • @Author : JCccc

  • @CreateTime : 2020/3/21

  • @Description : 调度工厂,线程池属性等等配置

**/

@Configuration

public class QuartzConfig {

@Autowired

private JobFactory jobFactory;

/**

  • 调度类FactoryBean

  • @return

  • @throws IOException

*/

@Bean(“schedulerFactory”)

public SchedulerFactoryBean schedulerFactoryBean() throws IOException {

SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();

//设置调度类quartz属性

schedulerFactoryBean.setQuartzProperties(quartzProperties());

//设置jobFactory

schedulerFactoryBean.setJobFactory(jobFactory);

return schedulerFactoryBean;

}

/**

  • 解析quartz.properties文件,填充属性

  • @return

  • @throws IOException

*/

@Bean

public Properties quartzProperties() throws IOException{

PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();

//若不做额外配置,会有默认的配置文件加载 在jar org.quartz里面 有一份quartz.

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值