定时任务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;//可以在增加一个类型执行其他类型的定时任务 } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。