SpringBoot 动态定时器的使用方法
SpringBoot使用定时器使用方法添加@Scheduled注解 设计cron参数即可 package com.clsystem.Comm; import org.springframework.scheduling.annotation.Scheduled; /** * Created by pudding on 2017-11-10.(打卡记录定时任务) */ @Component public class ClockTiming { /** * 定时器 */ @Scheduled(cron="0 0 0 * * ?")//每天0点开始 public void insertClock(){ //业务逻辑 } } 动态定时器的实现也非常简单继承SchedulingConfigurer 类实现方法即可 package com.clsystem.Comm; import com.clsystem.Util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.Trigger; import org.springframework.scheduling.TriggerContext; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; import org.springframework.stereotype.Component; import java.util.Calendar; import java.util.Date; /** * Created by pudding on 2017-11-15.(动态定时器 用于打卡前10分钟推送消息)(!闹钟) */ @Component public class DynamicScheduledTask implements SchedulingConfigurer { @Autowired private CheckSystemMapper checkSystemMapper; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addTriggerTask(new Runnable() { @Override public void run() { // 定时任务的业务逻辑 System.out.println("提醒打卡"); } },new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) {//设置下次定时器 Integer day= DateUtil.getDay();//获取今天周几 day+=1;//得到明天周几 if (day==8){//排除周日 day=1; } String MornTime=checkSystemMapper.getCheckSystem(day).getBeforeMornTime();//获取明天上班时间 int j = MornTime.indexOf(":"); Integer BeforeMornTimeHour=Integer.parseInt(MornTime.substring(0,j));//取早上上班时 Integer BeforeMornTimeMinute=Integer.parseInt(MornTime.substring(j+1,MornTime.length()));//取早上上班分 Date date=new Date(); date.setHours(BeforeMornTimeHour); date.setMinutes(BeforeMornTimeMinute); date.setSeconds(0); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MINUTE,-10);//减去10分钟 int hour=cal.get(Calendar.HOUR_OF_DAY);//24小时制 int minute=cal.get(Calendar.MINUTE);//分 String cron="0 "+minute+" "+hour+" * * "+day+""; System.out.println(cron); CronTrigger trigger = new CronTrigger(cron); // 定时任务触发,可修改定时任务的执行周期 Date nextExecDate = trigger.nextExecutionTime(triggerContext); return nextExecDate; } }); } } cron参数基本用法: ●星号():可用在所有字段中,表示对应时间域的每一个时刻,例如,在分钟字段时,表示“每分钟”; 表2下面给出一些完整的Cron表示式的实例: CRON表达式 含义 总结 以上所述是小编给大家介绍的SpringBoot 动态定时器的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |