1.引入quartz依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2.建一个普通类用来实现定时任务的逻辑,继承 QuartzJobBean抽象类,重写executeInternal方法
这个累没法autowired引入其他对象,只能通过配置文件类传递过来,所以要属性名和set方法
private ExpireDao dao;
public void setDao(ExpireDao dao) {
this.dao = dao;
}
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
dao.expireRecordCreate(list);
}
3.接下来创建QuartzConfig对JobDetail和Trigger进行配置
@Configuration
public class QuartzConfig {
@Autowired
private ExpireDao dao;
@Bean
JobDetailFactoryBean jobDetail() {
JobDetailFactoryBean bean = new JobDetailFactoryBean();
bean.setJobClass(ExpireDetection.class);
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("dao", dao);//通过JobDataMap传递参数到Job中,Job只要提供属性名,并提供相应的set方法即可接收到参数。
bean.setJobDataMap(jobDataMap);
bean.setDurability(true);
return bean;
}
@Bean
CronTriggerFactoryBean cronTrigger() {
CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
bean.setJobDetail(jobDetail().getObject());
bean.setCronExpression("0 43 17 * * ?");//每年/每月/每日/5点/43分/0秒开始执行任务
return bean;
}
@Bean
SchedulerFactoryBean schedulerFactory() {
SchedulerFactoryBean bean = new SchedulerFactoryBean();
CronTrigger cronTrigger = cronTrigger().getObject();
bean.setTriggers(cronTrigger);
return bean;
}