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 动态定时器的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
