文章目录
1. maven依赖2. QuartConfig配置文件3. 创建一个业务处理类UserService4. 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.*;@Configurationpublic class QuartConfig {// 1.创建job对象@Beanpublic 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;// }@Beanpublic CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {CronTriggerFactoryBean factory = new CronTriggerFactoryBean();factory.setJobDetail(jobDetailFactoryBean.getObject());//设置触发时间factory.setCronExpression("0/2 * * * * ?");return factory;}//3.创建scheduler对象@Beanpublic SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean, MyAdaptableJobFactory myAdaptableJobFactory) {SchedulerFactoryBean factory = new SchedulerFactoryBean();//关联Tiggerfactory.setTriggers(cronTriggerFactoryBean.getObject());//注入对象并完成实例化factory.setJobFactory(myAdaptableJobFactory);return factory;}}
3. 创建一个业务处理类UserService
package com.gblfy;import org.springframework.stereotype.Service;@Servicepublic 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 {@Autowiredprivate UserService userService;@Overridepublic 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.ponent;/*** 手动将对象注入导视牌SringIOC容器类*/@Component("myAdaptableJobFactory")public class MyAdaptableJobFactory extends AdaptableJobFactory {@Autowired//可以将一个对象添加到spring的ioc容器中,并完成对象属性的注入private AutowireCapableBeanFactory autowireCapableBeanFactory;/*** 该方法需要将实例化的任务对象手动添加到springioc的容器中,并完成对象的注入** @param bundle* @return* @throws Exception*/@Overrideprotected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {Object obj = super.createJobInstance(bundle);//将obj对象添加到spring的ioc容器中,并完成注入this.autowireCapableBeanFactory.autowireBean(obj);return obj;}}
6. 启动类加注解
@EnableScheduling