使用调度器说明,主要还是轮询获得相应的方法,顺便了解一下调度器的各类api
public enum CronTabExpressionEnum{
MONTH("month"){
@Override
public void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone) {
triggerBuilder.withSchedule(monthlyOnDayAndHourAndMinute(frequency.getOffset(),frequency.getHour(), frequency.getMinute())
.inTimeZone(timeZone));
}
},
WEEK("week"){
@Override
public void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone) {
//Sun: 1, Mon: 2 以此类推
triggerBuilder.withSchedule(weeklyOnDayAndHourAndMinute(frequency.getOffset(), frequency.getHour(), frequency.getMinute())
.inTimeZone(timeZone));
}
},
DAY("day"){
@Override
public void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone) {
triggerBuilder.withSchedule(dailyAtHourAndMinute(frequency.getHour(), frequency.getMinute())
.inTimeZone(timeZone));
}
},
public abstract void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone);
@Getter
public String type;
//通过轮询来获得相应的方法
public static CronTabExpressionEnum fromValue(String type) {
return Stream.of(CronTabExpressionEnum.values()).filter(fileType ->
StringUtils.equals(fileType.getType(), type)
).findFirst().get();
}
}
接下来调用
CronTabExpressionEnum.fromValue("day".toLowerCase()).setScheduler(triggerBuilder, frequency, timeZone);
其实主要通过fromValue方法来轮询枚举,通过type的值得到相应的枚举方法。