定时任务的两种方法
- 通过注解@Scheduled的实现 代码如下
@Component
@Slf4j
public class ScheduledService {
@Scheduled(cron = "0/5 * * * * ?")
public void scheduled(){
log.info("方法执行了!------");
}
}
记得一定要在springboot的启动类上加上@EnableScheduling
- 通过配置类实现定时任务
@Configuration
@Slf4j
public class ScheduledConfig implements SchedulingConfigurer {
//这个是用来查询数据库的Dao
@Resource
private ScheduledTableDao scheduledTableDao;
/**
* @Author linyu.dai
* @Description 实现方法
* @Date 2022/7/7 15:45
* @Param [scheduledTaskRegistrar]
* @return void
*/
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
List<ScheduledTable> findall = scheduledTableDao.findall(); //数据库的任务表
findall.forEach(v->{
//获取任务
Runnable run=()->{
//Task是要执行的消息内容 我这里就打印一下
//这里可以放微服务的调用地址 定时调用其他的微服务
log.info(v.getTask());
};
//获取任务时间周期
Trigger trigger=triggerContext -> {
//获取cron时间周期语法
return new CronTrigger(v.getCron()).nextExecutionTime(triggerContext);
};
//添加定时任务了
scheduledTaskRegistrar.addTriggerTask(run,trigger);
});
}
}
数据库的数据