前言
使用spring-task实现定时任务有两种方式:注解和xml配置文件。这里使用注解的方式加以说明。
一、spring-task是什么?
spring-task模块是spring框架的一部分,可以提供中小项目需要的定时任务功能,学习十分简单。
实现定时任务功能的还有:java中的Timer类、Quartz框架(功能全面,可以实现分布式)、Elastic-job框架(核心是Quartz)、xxl-job框架(功能全面易于使用)。
二、使用步骤
1.导入依赖
由于我做的是maven管理的springboot项目,导入的是springboot的起步依赖,只要有org.springframework:spring-context依赖就行。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
2.启动类上添加@EnableScheduling
@EnableScheduling:启动定时任务,放在启动类的上面
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@SpringBootApplication
public class MicroTaskApplication {
public static void main(String[] args) {
SpringApplication.run(MicroTaskApplication.class, args);
}
}
3.方法上添加@Scheduled
@Scheduled: 指定方法是定时要执行执行的内容, 放在方法的上面,使用cron表达式
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class TaskManager {
/**
* 测试定时任务
*/
@Scheduled(cron = "0/5 * * * * ?")
public void testCron(){
System.out.println("定时任务:" + new Date());
}
}
接下来启动服务,该方法就会每五秒执行一次,特别要说明的是,方法不是启动马上执行的,而是时间最接近时执行,00、05、10、15…,而不是01、06、11…,同理其他域的时间也是一样。