文章目录
- 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