【Java】SpringBoot整合QuartZ定时任务

        定时任务 Quartz 很强大,Quartz 提供了灵活且强大的调度功能,支持多种触发器和调度器的配置选项,使得开发者能够轻松地管理定时任务。

Quartz 使用步骤:

1.添加依赖


    org.springframework.boot
    spring-boot-starter-quartz

2.编写配置文件

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

@Configuration
public class QuartzConfig {

    private static final String QUARTZ_TASK_IDENTITY = "QuartzTask";
    
    @Bean
    public JobDetail quartzDetail(){
        return JobBuilder.newJob(TaskQuartz.class).withIdentity(QUARTZ_TASK_IDENTITY).storeDurably().build();
    }
    
    @Bean
    public Trigger quartzTrigger(){
        SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()

//                .withIntervalInSeconds(10)  //设置时间周期单位秒
                .withIntervalInHours(2)  //两个小时执行一次
                .repeatForever();
        return TriggerBuilder.newTrigger().forJob(quartzDetail())
                .withIdentity(QUARTZ_TASK_IDENTITY )
                .withSchedule(scheduleBuilder)
                .build();
    }
}

3.编写执行任务的类继承自 QuartzJobBean

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateUtils;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;

import java.text.SimpleDateFormat;
import java.util.Date;

/**

 * 定时任务
   */
   @Slf4j
   public class TaskQuartz extends QuartzJobBean {

   @Autowired
   XxxService xxxService;

   private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

   @Override
   protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {

       log.info("TaskQuartz-------- {}", sdf.format(new Date()));
       
       // 你实际需求需要定时执行的方法
       xxxService.xxxMethod1();
       xxxService.xxxMethod2();

   }
   }

上述就是2小时执行一次Quartz中定时任务,直接执行XxxService的方法。

你可能感兴趣的:(Java,spring,boot,后端,java)