SpringCloud自定义定时任务

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.text.SimpleDateFormat;
import java.util.Date;
   /*
    1.cron表达式格式:
   {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}

   2.cron表达式各占位符解释:
   {秒数}{分钟} ==> 允许值范围: 0~59 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常
   “*” 代表每隔1秒钟触发;
   “,” 代表在指定的秒数触发,比如”0,15,45”代表0秒、15秒和45秒时触发任务
   “-“代表在指定的范围内触发,比如”25-45”代表从25秒开始触发到45秒结束触发,每隔1秒触发1次
   “/”代表触发步进(step),”/”前面的值代表初始值(““等同”0”),后面的值代表偏移量,比如”0/20”或者”/20”代表从0秒钟开始,每隔20秒钟触发1次,即0秒触发1次,20秒触发1次,40秒触发1次;”5/20”代表5秒触发1次,25秒触发1次,45秒触发1次;”10-45/20”代表在[10,45]内步进20秒命中的时间点触发,即10秒触发1次,30秒触发1次
   {小时} ==> 允许值范围: 0~23 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常,占位符和秒数一样
   {日期} ==> 允许值范围: 1~31 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常
   {星期} ==> 允许值范围: 1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六(一星期的最后一天),不允许为空值,若值不合法,调度器将抛出SchedulerException异常
   {年份} ==> 允许值范围: 1970~2099 ,允许为空,若值不合法,调度器将抛出SchedulerException异常

   说明-------------->:
    *:代表所有可能的值
   -:指定范围
   ,:列出枚举  例如在分钟里,"5,15"表示5分钟和20分钟触发
   /:指定增量  例如在分钟里,"3/15"表示从3分钟开始,没隔15分钟执行一次
   ?:表示没有具体的值,使用?要注意冲突
   L:表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月的最后一个星期五
   W:只能用在月份中,表示最接近指定天的工作日
   #:只能用在星期中,表示这个月的第几个周几,例如6#3表示这个月的第3个周五*/

//   示例:----------------->
// "0 0 12 * * ?"每天中午十二点触发
// "0 15 10 ? * *"每天早上10:15触发
// "0 15 10 * * ?"每天早上10:15触发
// "0 15 10 * * ? *"每天早上10:15触发
// "0 15 10 * * ? 2005"2005年的每天早上10:15触发
// "0 * 14 * * ?"每天从下午2点开始到2点59分每分钟一次触发
// "0 0/5 14 * * ?"每天从下午2点开始到2:55分结束每5分钟一次触发
// "0 0/5 14,18 * * ?"每天下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
// "0 0-5 14 * * ?"每天14:00至14:05每分钟一次触发
// "0 10,44 14 ? 3 WED"三月的每周三的14:10和14:44触发
// "0 15 10 ? * MON-FRI"每个周一,周二,周三,周四,周五的10:15触发
// "0 15 10 15 * ?"每月15号的10:15触发
// "0 15 10 L * ?"每月的最后一天的10:15触发
// "0 15 10 ? * 6L"每月最后一个周五的10:15触发
// "0 15 10 ? * 6L 2002-2005"2002年至2005年的每月最后一个周五的10:15触发
// "0 15 10 ? * 6#3"每月的第三个周五的10:15触发
// "0 0 */1 * * ?"每小时执行一次
// "0 0/5 * * * ?"每五钟执行一次
// "0/5 * * * * ?"每5秒执行一次

@Configuration
@EnableScheduling
public class SaticScheduleTask {
   @Autowired
   private CronService cronService;
   //每五钟执行一次
   @Scheduled(cron = "0 0/5 * * * ?")
   private void settlementFrequency() {
      //设置日期格式
      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      // new Date()为获取当前系统时间
      System.out.println("执行静态定时任务时间: " + df.format(new Date()));
   }

   //每天凌晨00:00:01触发
   @Scheduled(cron = "01 0 0 * * ?")
   private void settlementPackage() {
      //设置日期格式
      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      // new Date()为获取当前系统时间
      System.out.println("执行静态定时任务时间: " + df.format(new Date()));

   }
}

你可能感兴趣的:(JAVA)