上一课,我们熟悉了quartz开发的步骤,回想上周,在配置文件中需要触发bean配置时间,这时候我们需要设置,什么时候什么时间点启动服务,当然spring也为我们提供了一些加载的方式可以按照起始和结束时间进行定制任务,那么我们是不是有其他更好的方法,答案是肯定可以的,那么需要做些什么了,看看本文一下的描述吧;
第一步我们需要编写一个调度service的bean
a。编写接口类
public interface SchedulerService { /** * 根据 Quartz Cron Expression 调试任务 * @param cronExpression Quartz Cron 表达式,如 "0/10 * * ? * * *"等 */ void schedule(String cronExpression); /** * 根据 Quartz Cron Expression 调试任务 * @param name Quartz CronTrigger名称 * @param cronExpression Quartz Cron 表达式,如 "0/10 * * ? * * *"等 */ void schedule(String name,String cronExpression); /** * 根据 Quartz Cron Expression 调试任务 * @param cronExpression Quartz CronExpression */ void schedule(CronExpression cronExpression); /** * 根据 Quartz Cron Expression 调试任务 * @param name Quartz CronTrigger名称 * @param cronExpression Quartz CronExpression */ void schedule(String name,CronExpression cronExpression); /** * 在startTime时执行调试一次 * @param startTime 调度开始时间 */ void schedule(Date startTime); /** * 在startTime时执行调试一次 * @param name Quartz SimpleTrigger 名称 * @param startTime 调度开始时间 */ void schedule(String name,Date startTime); /** * 在startTime时执行调试,endTime结束执行调度 * @param startTime 调度开始时间 * @param endTime 调度结束时间 */ void schedule(Date startTime,Date endTime); /** * 在startTime时执行调试,endTime结束执行调度 * @param name Quartz SimpleTrigger 名称 * @param startTime 调度开始时间 * @param endTime 调度结束时间 */ void schedule(String name,Date startTime,Date endTime); /** * 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次 * @param startTime 调度开始时间 * @param endTime 调度结束时间 * @param repeatCount 重复执行次数 */ void schedule(Date startTime,Date endTime,int repeatCount); /** * 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次 * @param name Quartz SimpleTrigger 名称 * @param startTime 调度开始时间 * @param endTime 调度结束时间 * @param repeatCount 重复执行次数 */ void schedule(String name,Date startTime,Date endTime,int repeatCount); /** * 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次,每隔repeatInterval秒执行一次 * @param startTime 调度开始时间 * @param endTime 调度结束时间 * @param repeatCount 重复执行次数 * @param repeatInterval 执行时间隔间 */ void schedule(Date startTime,Date endTime,int repeatCount,long repeatInterval) ; /** * 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次,每隔repeatInterval秒执行一次 * @param name Quartz SimpleTrigger 名称 * @param startTime 调度开始时间 * @param endTime 调度结束时间 * @param repeatCount 重复执行次数 * @param repeatInterval 执行时间隔间 */ void schedule(String name,Date startTime,Date endTime,int repeatCount,long repeatInterval); }
b.编写接口类的实现,
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; } public void schedule(String cronExpression) { schedule(null, cronExpression); } public void schedule(String name, String cronExpression) { try { schedule(name, new CronExpression(cronExpression)); } catch (ParseException e) { throw new RuntimeException(e); } } public void schedule(CronExpression cronExpression) { schedule(null, cronExpression); } 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); } } public void schedule(Date startTime) { schedule(startTime, null); } public void schedule(String name, Date startTime) { schedule(name, startTime, null); } public void schedule(Date startTime, Date endTime) { schedule(startTime, endTime, 0); } public void schedule(String name, Date startTime, Date endTime) { schedule(name, startTime, endTime, 0); } public void schedule(Date startTime, Date endTime, int repeatCount) { schedule(null, startTime, endTime, 0); } public void schedule(String name, Date startTime, Date endTime, int repeatCount) { schedule(name, startTime, endTime, 0, 0L); } public void schedule(Date startTime, Date endTime, int repeatCount, long repeatInterval) { schedule(null, startTime, endTime, repeatCount, repeatInterval); } 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); } } }
这里需要说明一下代码
private Scheduler scheduler;// 需要配置细节
private JobDetail jobDetail;//配置时间表
相关推荐
Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...
首先,理解Spring定时器的基础概念。Spring提供了两种定时任务框架:`java.util.Timer`和`@Scheduled`注解。然而,对于复杂的企业级应用,Quartz更具有优势,因为它支持集群、灵活的调度策略和丰富的API。 1. **...
总结来说,Spring定时器提供了两种方式来创建和执行定时任务:基于Timer的简单定时任务和基于Quartz的高级定时任务。Timer适用于简单的定时需求,而Quartz更适合需要精确控制任务执行时间和周期的复杂场景。在实际...
<groupId>org.quartz-scheduler <artifactId>quartz <version>2.x.x.RELEASE ``` 2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中,配置Quartz的SchedulerFactoryBean,设置数据源和...
Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...
这个"spring-quartz-demo"项目就是一个很好的示例,它展示了如何在Spring中整合Quartz以实现动态定时任务。 首先,我们要了解Spring和Quartz的基本概念。Spring是一个全面的Java企业级应用开发框架,它提供了依赖...
Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器
Spring 和 Quartz 是两个在 Java 开发中常用的框架,Spring 是一个全面的企业级应用开发框架,而 Quartz 是一个开源的作业调度框架,常用于实现定时任务。在这个文档中,我们将探讨如何将它们结合使用来实现一个...
【描述】"spring-quartz整合,实现定时器的动态开启(从数据库读取)" 提示我们这个项目不仅涉及Spring和Quartz的基本整合,还包含了一个关键特性:定时任务的配置可以从数据库中读取。这意味着系统可以动态地添加、...
本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...
Spring Quartz 定时器示例(Web工程版),欢迎下载。
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
Spring Quartz定时器是Java开发中常用的一个任务调度框架,它结合了Spring框架的强大功能与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务。在这个压缩包中,包含了三个核心的jar文件:`quartz-all-...
在Spring框架中,有两种主要的方法来实现定时任务:Spring自带的`@Scheduled`注解和引入第三方库Quartz。这两种方法都可以帮助开发者在特定的时间点执行任务,为应用程序添加计划任务的能力。 首先,我们来看看使用...
这个"Spring定时器Quartz"的学习资源很适合初学者,它提供了可以直接运行的示例代码,帮助你快速理解和上手。 1. **Quartz简介** - Quartz是一个开源的作业调度框架,它能够精确地安排任务执行时间,支持复杂的...
本文将详细讲解如何在Spring Boot项目中集成Quartz定时器,以及如何利用Spring的依赖注入特性来实现Job。 一、集成Quartz定时器 1. 添加依赖:首先,你需要在Spring Boot项目的`pom.xml`或`build.gradle`文件中...
### Spring 定时器的使用 #### 背景与需求 在开发应用程序时,并非所有操作都需要用户主动触发。有些任务需要系统自动执行,比如数据同步、定期备份等。例如,电力行业的集抄系统(一种自动收集电表读数的系统)...
在Spring应用中添加Quartz支持,你需要在`pom.xml`或`build.gradle`文件中引入Quartz的依赖,比如`quartz-all.jar`。接着,在Spring的配置文件(如`applicationContext.xml`)中,定义一个`SchedulerFactoryBean`来...
<groupId>org.quartz-scheduler <artifactId>quartz <version>2.3.2 <groupId>org.springframework <artifactId>spring-context-support <version>5.3.18 @Configuration @EnableScheduling public class ...