① 在 main 中开启定时任务的注解 @EnableScheduling
package com.cun;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling //开启定时任务注解
@SpringBootApplication
public class AsMailTaskApplication {
public static void main(String[] args) {
SpringApplication.run(AsMailTaskApplication.class, args);
}
}
②在 Service 中编写定时任务 @Scheduled
fixedDelay: 每次方法执行完毕后,等待Nms再执行此方法。
/**
* 每次方法执行完毕后,等待5s再执行此方法。
* 同时只能有个线程运行此方法
*/
@Scheduled(fixedDelay=5000)
public void fixedDelay() {
try {
// 执行方法需要10s
Thread.sleep(1000 * 10);
} catch (InterruptedException e) {
}
log.info("fixedDelay--");
}
注意:定时方法返回值只能是void且不能有传入参数
fixedRate: 每隔5s调用一次此方法,无论之前的方法是否执行完毕
/**
* 每隔5s调用一次此方法,无论之前的方法是否执行完毕
* 同时可能有N个线程执行此方法
*
*/
@Scheduled(fixedRate=5000)
public void fixedRate() {
try {
// 执行方法需要10s
Thread.sleep(1000 * 10);
} catch (InterruptedException e) {
}
log.info("fixedRate--");
}
initialDelay: 第一次调用此方法前的等待时间
/***
* initialDelay: 第一次调用此方法前的等待时间
*
*/
@Scheduled(initialDelay=1000, fixedRate=5000)
public void initialDelayAndfixedRate() {
log.info("initialDelayAndfixedRate--");
}
cron:通过cron配置值
/**
* 支持cron语法:
* 每个参数的意义分别是: second, minute, hour, day of month, month, day of week
*
* 如下:周一至周五,每隔5s执行一次方法
*/
@Scheduled(cron="*/5 * * * * SUN-MON")
public void cron() {
log.info("cron--");
}
③ Maven 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>