在开发中很多地方需要用到定时任务,如定时发送邮件,清理数据等,在Spring Boot 中已经帮我们实现了,只需要增加相应的注解即可。
- pom配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 启动类增加@EnableScheduling注解,即可开启定时
@EnableScheduling
@SpringBootApplication
public class XiongxsScheduledApplication {
public static void main(String[] args) {
SpringApplication.run(XiongxsScheduledApplication.class, args);
}
}
- 编写定时任务实现类
//任务1
@Component
public class ScheduledTask {
private int count = 0;
@Scheduled(cron = "*/6 * * * * ?")
private void proess() {
System.out.println("count = " + count++);
}
}
//任务2
@Component
public class Scheduled2Task {
private static final SimpleDateFormat dataFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 6000)
private void reportCurrentTime() {
System.out.println("现在时间" + dataFormat.format(new Date()));
}
}
运行结果
count = 0
现在时间13:23:10
count = 1
现在时间13:23:16
count = 2
现在时间13:23:22
count = 3
现在时间13:23:28
count = 4
现在时间13:23:34
count = 5
现在时间13:23:40
- 注解参数说明
@Component 泛指组建,当组建不好归类的时候用这个注解标注,把普通的POJO类实例化到Spring的IOC容器中。
@EnableScheduling 开启定时
@Scheduled 参数可以接受两种定时的设置,一种是我们常用的cron="*/6 * * * * ?",一种是 fixedRate = 6000,两种都表示每隔六秒打印一下内容。
fixedRate 说明
@Scheduled(fixedRate = 6000) :上一次开始执行时间点之后6秒再执行
@Scheduled(fixedDelay = 6000) :上一次执行完毕时间点之后6秒再执行
@Scheduled(initialDelay=1000, fixedRate=6000) :第一次延迟1秒后执行,之后按fixedRate的规则每6秒执行一次
网友评论