SpringBoot基于数据库的定时任务统一管理的实现

  

定时任务1
  

        进口lombok.extern.slf4j.Slf4j;/* *   * @author由niugang>   进口lombok.extern.slf4j.Slf4j;/* *   * @author由niugang>   进口lombok.Data;   进口lombok.extern.slf4j.Slf4j;   进口org.springframework.context.annotation.Configuration;   进口org.springframework.scheduling.annotation.EnableScheduling;   进口org.springframework.scheduling.annotation.SchedulingConfigurer;   进口org.springframework.scheduling.config.CronTask;   进口org.springframework.scheduling.config.ScheduledTask;   进口org.springframework.scheduling.config.ScheduledTaskRegistrar;      进口java.lang.reflect.Method;   进口java.util.ArrayList;   进口并不知道;/* *   * @author由niugang 2019/12/24/15:19   */@ configuration   @EnableScheduling   @Slf4j   公共类CompleteScheduleConfig实现SchedulingConfigurer {      私有静态List,taskRecordList=new ArrayList<的在();/*   *模拟数据库存储   */静态{   TaskRecord TaskRecord=new TaskRecord ();   taskRecord.setExecuteMehod (“task1”);   taskRecord.setClassPath (“com.example.demo.pojo.TaskTest”);   taskRecord。setCron (0/5 * * * * & # 63;”);   taskRecordList.add (taskRecord);      TaskRecord taskRecord2=new TaskRecord ();   taskRecord2.setExecuteMehod (“task2”);   taskRecord2.setClassPath (“com.example.demo.pojo.TaskTest2”);   taskRecord2。setCron (0/10 * * * * & # 63;”);   taskRecordList.add (taskRecord2);   }         @Override   公共空间configureTasks (ScheduledTaskRegistrar taskRegistrar) {//taskRegistrar.addCronTask (()→log.info(“执行定时任务,{}”,LocalDateTime.now ()),“* * * * & # 63; 0/5“);/* taskRegistrar。addCronTask(新Runnable () {   @Override   公共空间run () {   尝试{   Class<& # 63;比;aClass=forname (“com.example.demo.pojo.TaskTest”);   对象o=aClass.newInstance ();   方法[]declaredMethods=aClass.getDeclaredMethods ();   (方法declaredMethod: declaredMethods) {   declaredMethod.invoke (o);//log.info(“方法名称:{}”,declaredMethod.getName ());   }   }捕捉(异常e) {   e.printStackTrace ();   }   }   },“0/5 * * * * & # 63;”);*/(TaskRecord TaskRecord: taskRecordList) {   字符串类路径=taskRecord.getClassPath ();   字符串cron=taskRecord.getCron ();   字符串executeMehod=taskRecord.getExecuteMehod ();   可运行Runnable=()→{   Class<& # 63;比;aClass;   尝试{   aClass=forname(路径);   对象o=aClass.newInstance ();   方法[]declaredMethods=aClass.getDeclaredMethods ();   (方法declaredMethod: declaredMethods) {   如果(declaredMethod.getName () .equals (executeMehod)) {///log.info(“方法名称:{}”,declaredMethod.getName ());   declaredMethod.invoke (o);   }   }   }捕捉(异常e1) {   e1.printStackTrace ();   }   };   CronTask CronTask=new CronTask (runnable, cron);   ScheduledTask ScheduledTask=taskRegistrar.scheduleCronTask (cronTask);//scheduledTask.cancel ();取消定时任务      }         }         @ data   私有静态类TaskRecord {      私人字符串类路径;      私人字符串executeMehod;      私人字符串cron;//可以在增加一个类型执行其他类型的定时任务   }   }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

SpringBoot基于数据库的定时任务统一管理的实现