0
点赞
收藏
分享

微信扫一扫

SpringBoot2.x整合quartz定时任务 快速入门


文章目录

  • ​​1. maven依赖​​
  • ​​2. QuartConfig配置文件​​
  • ​​3. 创建一个业务处理类UserService​​
  • ​​4. Job类 调用方法​​
  • ​​5. 手动将对象注入导视牌SringIOC容器类​​
  • ​​6. 启动类加注解​​

1. maven依赖

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

2. QuartConfig配置文件

package com.gblfy;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.*;

@Configuration
public class QuartConfig {


// 1.创建job对象
@Bean
public JobDetailFactoryBean jobDetailFactoryBean() {
JobDetailFactoryBean factory = new JobDetailFactoryBean();
factory.setJobClass(QuartzDemo.class);
return factory;
}

// 2.创建Tigger对象 简单
// @Bean
// public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {
// SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean();
// //关联JobDetail对象
// factory.setJobDetail(jobDetailFactoryBean.getObject());
// factory.setRepeatInterval(2000);
// factory.setRepeatCount(5);
// //设置重次数
// return factory;
// }

@Bean
public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {
CronTriggerFactoryBean factory = new CronTriggerFactoryBean();
factory.setJobDetail(jobDetailFactoryBean.getObject());
//设置触发时间
factory.setCronExpression("0/2 * * * * ?");
return factory;
}

// 3.创建scheduler对象
@Bean
public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean, MyAdaptableJobFactory myAdaptableJobFactory) {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
//关联Tigger
factory.setTriggers(cronTriggerFactoryBean.getObject());
//注入对象并完成实例化
factory.setJobFactory(myAdaptableJobFactory);
return factory;

}

}

3. 创建一个业务处理类UserService

package com.gblfy;

import org.springframework.stereotype.Service;

@Service
public class UserService {

//模拟操作数据库操作业务逻辑
public void addUser() {
System.out.println("add users....");
}
}

4. Job类 调用方法

package com.gblfy;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Date;

/**
* Job类
*/
public class QuartzDemo implements Job {

@Autowired
private UserService userService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("execute:"+ new Date());
this.userService.addUser();
}
}

5. 手动将对象注入导视牌SringIOC容器类

package com.gblfy;

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;

/**
* 手动将对象注入导视牌SringIOC容器类
*/
@Component("myAdaptableJobFactory")
public class MyAdaptableJobFactory extends AdaptableJobFactory {

@Autowired//可以将一个对象添加到spring的ioc容器中,并完成对象属性的注入
private AutowireCapableBeanFactory autowireCapableBeanFactory;

/**
* 该方法需要将实例化的任务对象手动添加到springioc的容器中,并完成对象的注入
*
* @param bundle
* @return
* @throws Exception
*/
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object obj = super.createJobInstance(bundle);
//将obj对象添加到spring的ioc容器中,并完成注入
this.autowireCapableBeanFactory.autowireBean(obj);

return obj;
}
}

6. 启动类加注解

@EnableScheduling


举报

相关推荐

0 条评论