1、启动类增加 @EnableScheduling 注解
@SpringBootApplication
@ComponentScan({"com.xxl.job.admin.controller","com.xxl.job.admin.core.conf","com.xxl.job.admin.localjob","com.xxl.job.admin.service"})
@MapperScan("com.xxl.job.admin.dao")
@EnableScheduling
public class XxlJobAdminApplication {
public static void main(String[] args) {
SpringApplication.run(XxlJobAdminApplication.class, args);
}
}
2、创建本地的定时任务:
@Service
@Slf4j
public class SaticScheduleTask {
@Resource
public XxlJobLogDao xxlJobLogDao;
//3.添加定时任务 每天2点执行一次,删除最近7天之前日志
@Scheduled(cron = "0 0 2 * * ?")
//或直接指定时间间隔,例如:5秒
//@Scheduled(fixedRate=5000)
private void configureTasks() {
log.info("删除执行日志-开始: " + LocalDateTime.now());
deleteXxlLog();
log.info("删除执行日志-结束: " + LocalDateTime.now());
}
private void deleteXxlLog(){
LocalDateTime now = LocalDateTime.now();
LocalDateTime time = now.minusDays(7);
xxlJobLogDao.deleteBeforeDate(time);
}
}
启动服务后,就会基于cron 的配置定时自动执行了。
其实如上项目本身也是一个开源的任务调度系统。 之所以再次使用了springboot 集成定时任务,是因为想定时清除xxl job的执行日志,又不想做过多的操作。总而言之,springboot快速集成定时任务,适用于一些简易的或应急的任务调度场景。长期来看的话,还是建议使用开源的任务调度系统,比如xxl-job / elastic-job。 相对使用体检会比较友好。
附: xxl-job 官网:
xxl-job 开源介绍:https://www.oschina.net/p/xxl-job?hmsr=aladdin1e1
xxl-job 开源社区:https://www.xuxueli.com/xxl-job/
xxl-job github:https://github.com/xuxueli/xxl-job/