<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;public class ReminderJob extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {// 获取任务参数,例如任务到期时间Date dueDate = (Date) JobDetail().getJobDataMap().get("dueDate");// 计算到期前一天的日期Calendar calendar = Instance();calendar.setTime(dueDate);calendar.add(Calendar.DAY_OF_MONTH, -1);Date reminderDate = Time();// 获取当前日期Date currentDate = new Date();// 判断是否到达提醒日期if (currentDate.after(reminderDate)) {// 执行提醒操作,例如发送邮件或推送通知等System.out.println("Reminder: Your task is due tomorrow!");}}
}
spring:quartz:job-store-type: memoryproperties:org:quartz:scheduler:instanceName: MySchedulerinstanceId: AUTOjobStore:class: org.quartz.simpl.RAMJobStorethreadPool:class: org.quartz.simpl.SimpleThreadPoolthreadCount: 5threadPriority: 5
这个配置文件中,我们指定了Quartz使用内存作为任务存储方式,同时配置了线程池的大小和优先级。
接下来,在Spring Boot的启动类中添加一个SchedulerFactoryBean实例,并设置任务和触发器:
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.SimpleTrigger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import t.annotation.Bean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;@SpringBootApplication
public class Application {@Autowiredprivate JobDetailFactoryBean jobDetailFactoryBean;@Autowiredprivate SimpleTriggerFactoryBean simpleTriggerFactoryBean;public static void main(String[] args) {SpringApplication.run(Application.class, args);}@Beanpublic JobDetailFactoryBean jobDetailFactoryBean() {JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();jobDetailFactoryBean.setJobClass(ReminderJob.class);jobDetailFactoryBean.setDurability(true);jobDetailFactoryBean.setJobDataMap(new JobDataMap() {{put("dueDate", new Date()); // 设置任务参数,例如任务到期时间}});return jobDetailFactoryBean;}@Beanpublic SimpleTriggerFactoryBean simpleTriggerFactoryBean() {SimpleTriggerFactoryBean simpleTriggerFactoryBean = new SimpleTriggerFactoryBean();simpleTriggerFactoryBean.Object());simpleTriggerFactoryBean.setRepeatInterval(24 * 60 * 60 * 1000); // 每天执行一次simpleTriggerFactoryBean.setStartTime(new Date());return simpleTriggerFactoryBean;}@Beanpublic SchedulerFactoryBean schedulerFactoryBean() {SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();schedulerFactoryBean.setJobDetails(new JobDetail[] {Object()});schedulerFactoryBean.setTriggers(new Trigger[] {Object()});return schedulerFactoryBean;}
}
在这个启动类中,我们使用了@Autowired注解将JobDetailFactoryBean和SimpleTriggerFactoryBean注入进来,并在schedulerFactoryBean方法中将它们设置为Scheduler的任务和触发器。
这样,当我们启动Spring Boot应用时,Quartz就会自动启动,并按照我们的配置执行定时任务。
本文发布于:2024-01-31 04:46:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170664761625609.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |