动态调度服务实现类:
-
package com.sundoctor.quartz.service;
-
-
import java.text.ParseException;
-
import java.util.Date;
-
import java.util.UUID;
-
-
import org.quartz.CronExpression;
-
import org.quartz.CronTrigger;
-
import org.quartz.JobDetail;
-
import org.quartz.Scheduler;
-
import org.quartz.SchedulerException;
-
import org.quartz.SimpleTrigger;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.beans.factory.annotation.Qualifier;
-
import org.springframework.stereotype.Service;
-
-
@Service("schedulerService")
-
public class SchedulerServiceImpl implements SchedulerService {
-
-
private Scheduler scheduler;
-
private JobDetail jobDetail;
-
-
@Autowired
-
public void setJobDetail(@Qualifier("jobDetail") JobDetail jobDetail) {
-
this.jobDetail = jobDetail;
-
}
-
-
@Autowired
-
public void setScheduler(@Qualifier("quartzScheduler") Scheduler scheduler) {
-
this.scheduler = scheduler;
-
}
-
-
@Override
-
public void schedule(String cronExpression) {
-
schedule(null, cronExpression);
-
}
-
-
@Override
-
public void schedule(String name, String cronExpression) {
-
try {
-
schedule(name, new CronExpression(cronExpression));
-
} catch (ParseException e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
@Override
-
public void schedule(CronExpression cronExpression) {
-
schedule(null, cronExpression);
-
}
-
-
@Override
-
public void schedule(String name, CronExpression cronExpression) {
-
if (name == null || name.trim().equals("")) {
-
name = UUID.randomUUID().toString();
-
}
-
-
try {
-
scheduler.addJob(jobDetail, true);
-
-
CronTrigger cronTrigger = new CronTrigger(name, Scheduler.DEFAULT_GROUP, jobDetail.getName(),
-
Scheduler.DEFAULT_GROUP);
-
cronTrigger.setCronExpression(cronExpression);
-
scheduler.scheduleJob(cronTrigger);
-
scheduler.rescheduleJob(name, Scheduler.DEFAULT_GROUP, cronTrigger);
-
} catch (SchedulerException e) {
-
throw new RuntimeException(e);
-
}
-
}
-
-
@Override
-
public void schedule(Date startTime) {
-
schedule(startTime, null);
-
}
-
-
@Override
-
public void schedule(String name, Date startTime) {
-
schedule(name, startTime, null);
-
}
-
-
@Override
-
public void schedule(Date startTime, Date endTime) {
-
schedule(startTime, endTime, 0);
-
}
-
-
@Override
-
public void schedule(String name, Date startTime, Date endTime) {
-
schedule(name, startTime, endTime, 0);
-
}
-
-
@Override
-
public void schedule(Date startTime, Date endTime, int repeatCount) {
-
schedule(null, startTime, endTime, 0);
-
}
-
-
@Override
-
public void schedule(String name, Date startTime, Date endTime, int repeatCount) {
-
schedule(name, startTime, endTime, 0, 0L);
-
}
-
-
@Override
-
public void schedule(Date startTime, Date endTime, int repeatCount, long repeatInterval) {
-
schedule(null, startTime, endTime, repeatCount, repeatInterval);
-
}
-
-
@Override
-
public void schedule(String name, Date startTime, Date endTime, int repeatCount, long repeatInterval) {
-
if (name == null || name.trim().equals("")) {
-
name = UUID.randomUUID().toString();
-
}
-
-
try {
-
scheduler.addJob(jobDetail, true);
-
-
SimpleTrigger SimpleTrigger = new SimpleTrigger(name, Scheduler.DEFAULT_GROUP, jobDetail.getName(),
-
Scheduler.DEFAULT_GROUP, startTime, endTime, repeatCount, repeatInterval);
-
scheduler.scheduleJob(SimpleTrigger);
-
scheduler.rescheduleJob(name, Scheduler.DEFAULT_GROUP, SimpleTrigger);
-
-
} catch (SchedulerException e) {
-
throw new RuntimeException(e);
-
}
-
}
- }
SchedulerService
只有一个多态方法schedule,SchedulerServiceImpl实现SchedulerService接口,注入org.quartz.Schedulert和org.quartz.JobDetail,schedule方法可以动态配置org.quartz.CronExpression或org.quartz.SimpleTrigger调度时间。
相关推荐
在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...
在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...
本篇文章将详细探讨如何在Spring中动态配置Quartz,以及相关的核心知识点。 首先,我们需要在项目中引入Quartz和Spring的依赖。在Maven的pom.xml文件中添加如下依赖: ```xml <groupId>org.quartz-scheduler ...
标题与描述均聚焦于“Quartz在Spring中动态设置cronExpression”的主题,这涉及到了两个主要的开源项目:Quartz,一个强大的作业调度框架;以及Spring,一个广泛使用的Java平台框架,用于构建企业级应用程序。Quartz...
通过上述配置,不仅可以在 Spring 应用中实现定时任务的管理,还能根据实际需求动态调整任务的执行时间和状态。这种方式特别适用于需要频繁变更调度规则的应用场景,如 Web 应用中的报表生成、数据同步等任务。使用...
在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业调度器,可以让开发者轻松地实现任务的定时执行。它提供了强大的调度功能,可以满足复杂...
- 在`web.xml`中,通过`contextConfigLocation`参数指定了Spring配置文件的位置,这样Spring会自动加载`applicationContext-quartz.xml`。 3. **业务逻辑**: - `SysScheduleServiceImpl`类实现了`...
在Spring配置文件(如`applicationContext.xml`)中,定义`SchedulerFactoryBean`来实例化和配置Quartz Scheduler: ```xml <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz....
这个压缩包“Spring Quartz动态配置时间.rar”包含的PDF文档很可能是关于如何在Spring框架中使用Quartz进行动态配置时间的详细教程。下面将详细介绍Spring集成Quartz进行动态任务调度的相关知识点。 1. **Quartz...
在Spring配置文件(如`applicationContext.xml`)中配置Quartz的SchedulerFactoryBean。 ```xml <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ...
最后,启动Spring容器,Quartz会自动加载数据库中的Job和Trigger配置,按照设定的时间执行相应的任务。 通过这种方式,我们可以构建一个高度可扩展和可配置的定时任务系统,只需在数据库中修改Job和Trigger的配置,...
在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...
接下来是在Spring配置文件中对Quartz进行配置。以下是配置示例: ```xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!-- 要调用的工作类 --> ...
在Spring配置文件中,可以使用`SchedulerFactoryBean`来初始化并管理Scheduler。这个bean将负责启动、停止Scheduler,以及处理其他相关的生命周期事件。 在非配置动态定时任务中,我们不再在XML或Java配置中硬编码...
学习Quartz和Spring-Quartz,不仅需要理解它们的基本概念,还要掌握如何在实际项目中进行配置和使用。例如,创建一个定时任务,你需要定义Job类,配置Trigger,然后在Spring的配置文件中设置Scheduler。此外,熟悉...
2. 配置Scheduler:在Spring的配置文件中,使用`SchedulerFactoryBean`来初始化和配置Quartz Scheduler。可以设置如数据库存储、线程池大小等参数。 3. 创建Job类:定义一个实现了`org.quartz.Job`接口的类,这是...
3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...
- 如何在Spring中配置Quartz - 如何创建和配置JobDetail和Trigger - Cron表达式的使用和理解 - 如何在Job类中注入依赖 - 如何启动和停止Scheduler - 如何调试和管理定时任务 总的来说,"Quartz+Spring定时触发器...