项目开发中常常须要执行一些定时任务,好比在天天凌晨,须要从 implala 数据库拉取产品功能活跃数据,分析处理后存入到 MySQL 数据库中。相似这样的需求还有许多,那么怎么去实现定时任务呢,有如下几种实现方式。java
Spring 自身提供了对定时任务的支持,本文将介绍 Spring Boot 中 @Scheduled 定时器的使用。数据库
首先,在项目启动类上添加 @EnableScheduling 注解,开启对定时任务的支持框架
@SpringBootApplication @EnableScheduling public class ScheduledApplication { public static void main(String[] args) { SpringApplication.run(ScheduledApplication.class, args); } }
其中 @EnableScheduling注解的做用是发现注解@Scheduled的任务并后台执行。分布式
其次,编写定时任务类和方法,定时任务类经过 Spring IOC 加载,使用 @Component 注解,定时方法使用 @Scheduled 注解。spa
@Component public class ScheduledTask { @Scheduled(fixedRate = 3000) public void scheduledTask() { System.out.println("任务执行时间:" + LocalDateTime.now()); } }
fixedRate 是 long 类型,表示任务执行的间隔毫秒数,以上代码中的定时任务每 3 秒执行一次。日志
运行定时工程,项目启动和运行日志以下,可见每 3 秒打印一第二天志执行记录。code
2019-10-16 22:50:04.791 INFO 10610 --- [ main] com.wupx.ScheduledApplication : Started ScheduledApplication in 1.513 seconds (JVM running for 1.976) 任务执行时间:2019-10-16T22:50:04.791 任务执行时间:2019-10-16T22:50:07.782 任务执行时间:2019-10-16T22:50:10.779
在上面的入门例子中,使用了@Scheduled(fixedRate = 3000) 注解来定义每过 3 秒执行的任务,对于 @Scheduled 的使用能够总结以下几种方式:开发
其中,经常使用的cron表达式有:rem
本文主要介绍了基于 Spring Boot 内置的定时任务的配置使用,主要涉及两个注解,四个属性的配置:产品