Spring 定时任务 @Scheduled 注解
@Scheduled 注解
@Scheduled 注解是 Spring 框架中用于定义定时任务的一种方式。通过使用这个注解,你可以非常方便地在指定的时间间隔或指定的时间点执行某个方法。
关键属性
以下是 @Scheduled 注解的一些关键属性及其用法:
fixedRate:表示任务的固定执行频率(以毫秒为单位),即从上一次任务开始执行到下一次任务开始执行的间隔时间。
示例:@Scheduled(fixedRate = 5000) 表示每隔5秒执行一次任务。
fixedDelay:表示任务执行完成后的固定延迟时间(以毫秒为单位),即从上一次任务执行结束到下一次任务开始执行的间隔时间。
示例:@Scheduled(fixedDelay = 5000) 表示任务执行完成后,延迟5秒再执行下一次任务。
cron:使用cron表达式定义任务的执行时间,cron表达式由6或7个字段组成,分别表示秒、分、时、日、月、星期(可选字段为年)。
示例:@Scheduled(cron = "0 0 12 * * ?") 表示每天中午12点执行任务。
initialDelay:表示任务首次执行前的延迟时间(以毫秒为单位),通常与其他属性(如 fixedRate 或 fixedDelay)结合使用。
示例:@Scheduled(fixedRate = 5000, initialDelay = 10000) 表示在应用启动后10秒开始,每隔5秒执行一次任务。
使用示例
首先,确保你的 Spring Boot 项目已经引入了 spring-boot-starter 依赖,并且启用了调度功能(默认情况下是启用的)。
示例代码
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTask {
// 每隔5秒执行一次
@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
System.out.println("Fixed Rate Task executed at: " + System.currentTimeMillis());
}
// 任务执行完成后,延迟5秒再执行
@Scheduled(fixedDelay = 5000)
public void fixedDelayTask() {
System.out.println("Fixed Delay Task executed at: " + System.currentTimeMillis());
}
// 每天中午12点执行
@Scheduled(cron = "0 0 12 * * ?")
public void cronTask() {
System.out.println("Cron Task executed at: " + System.currentTimeMillis());
}
// 应用启动后10秒开始,每隔5秒执行一次
@Scheduled(fixedRate = 5000, initialDelay = 10000)
public void initialDelayTask() {
System.out.println("Initial Delay Task executed at: " + System.currentTimeMillis());
}
}
启用调度
确保你的 Spring Boot 应用已经启用了调度功能。通常,在 Spring Boot 项目中,通过在主应用类上添加 @EnableScheduling 注解来启用调度功能:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
注意事项
多线程:默认情况下,所有的定时任务都在一个单独的线程中顺序执行。如果某个任务执行时间较长,可能会影响其他任务的执行时间。
异常处理:默认情况下,如果定时任务抛出异常,任务会停止执行。你需要确保在任务方法中进行适当的异常处理。
任务配置:可以通过配置文件(如 application.properties 或 application.yml)动态配置定时任务的属性。
通过以上方式,你可以非常方便地在 Spring 应用中使用 @Scheduled 注解来实现定时任务。
原文地址:https://blog.csdn.net/achuiaiwajue/article/details/144405819
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!