上一课,我们熟悉了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定时器.doc
NULL 博文链接:https://x-nam.iteye.com/blog/728654
SPRING定时器--代码解读,学习quartz很好的资料
Spring-quartz实现定时器(含代码)
一个完整的Spring-quartz定时器 实现的示例
spring 定时器 内含TimerTask实现和Quartz实现两种方式
Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器
NULL 博文链接:https://ap0406708.iteye.com/blog/588695
spring定时器Spring定时器的两种实现方式Java的Timer类和OpenSymphony的Quartz。
Spring Quartz 定时器示例(Web工程版),欢迎下载。
spring 定时器 quartz
idea 使用spring自带的定时器quartz 使用的c3p0 v0.95.2所包含的jar 亲测可用
quartz-all-1.6.0.jar commons-dbcp-1.2.1.jar commons-pool.jar 三个jar包,用于Spring Quartz定时器
使用spring 实现的两种定时任务,使用eclipse直接导入就可使用
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
spring-quartz整合,实现定时器的动态开启(从数据库读取)
java类代码: import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; /** * 定时器 * @author Administrator ...另外加入一个quartz-all-1.6.0.jar包就OK
定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)
spring定时器代码。解决多次执行问题。包含quartz-all.jar包。 说明很详细。希望能帮上哪位朋友。