版权声明:标明出处自由转载 https://blog.csdn.net/qq_36226997/article/details/91451377
1.引入pom依赖
<!-- Quartz坐标 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<!-- Scheduled坐标 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- spring-tx坐标 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
2.创建job类
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;
/**
* 定时任务类
*/
public class QuartzDemo implements Job {
/**
* 任务被触发时所执行的方法
* @param context
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("QuartzDemo.execute"+new Date());
}
}
3.创建Quartz的配置类
3.1 普通时间格式
import com.example.demo.quartz.QuartzDemo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
/**
* Quartz的配置类
*/
@Configuration
public class QuartzConfig {
//1.创建job对象
@Bean
public JobDetailFactoryBean jobDetailFactoryBean() {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
//关联Job类
factoryBean.setJobClass(QuartzDemo.class);
return factoryBean;
}
//2.创建Trigger对象(简单的)
@Bean
public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {
SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean();
//关联JobDetail对象
factoryBean.setJobDetail(jobDetailFactoryBean.getObject());
//参数表示一个执行的毫秒数
factoryBean.setRepeatInterval(2000);
//设置重复次数
factoryBean.setRepeatCount(5);
return factoryBean;
}
//3.创建Scheduled对象
@Bean
public SchedulerFactoryBean schedulerFactoryBean(SimpleTriggerFactoryBean simpleTriggerFactoryBean) {
SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
//关联Trigger
factoryBean.setTriggers(simpleTriggerFactoryBean.getObject());
return factoryBean;
}
}
3.2 Cron时间格式
import com.example.demo.quartz.QuartzDemo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
/**
* Quartz的配置类
*/
@Configuration
public class QuartzConfig {
//1.创建job对象
@Bean
public JobDetailFactoryBean jobDetailFactoryBean() {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
//关联Job类
factoryBean.setJobClass(QuartzDemo.class);
return factoryBean;
}
//2.Cron Trigger
@Bean
public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {
CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
//关联JobDetail对象
factoryBean.setJobDetail(jobDetailFactoryBean.getObject());
//设置触发时间
factoryBean.setCronExpression("0/2 * * * * ?");
return factoryBean;
}
//3.创建Scheduled对象
@Bean
public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean) {
SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
//关联Trigger
factoryBean.setTriggers(cronTriggerFactoryBean.getObject());
return factoryBean;
}
}
4.测试代码
启动类添加@EnableScheduling注解
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
控制台输出
QuartzDemo.executeTue Jun 11 17:33:53 CST 2019
QuartzDemo.executeTue Jun 11 17:33:53 CST 2019
QuartzDemo.executeTue Jun 11 17:33:55 CST 2019
QuartzDemo.executeTue Jun 11 17:33:57 CST 2019
QuartzDemo.executeTue Jun 11 17:33:59 CST 2019