在 Spring Boot 中,你可以使用 @Scheduled
注解或者实现 SchedulingConfigurer
接口来实现定时任务。以下是两种方式的简单示例:
@Scheduled
注解:
1. 使用 import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MyScheduledTask {
@Scheduled(fixedRate = 5000) // 每隔5秒执行一次
public void myFixedRateTask() {
System.out.println("Fixed Rate Task executed at " + System.currentTimeMillis());
}
@Scheduled(cron = "0 0/1 * * * ?") // 每分钟执行一次
public void myCronTask() {
System.out.println("Cron Task executed at " + System.currentTimeMillis());
}
}
在上面的例子中,通过 @Scheduled
注解标注的方法 myFixedRateTask
和 myCronTask
将会按照指定的时间间隔执行任务。fixedRate
属性表示任务执行的时间间隔,cron
属性使用 Cron 表达式来定义执行的时间规则。
SchedulingConfigurer
接口:
2. 实现 import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
@Configuration
@EnableScheduling
public class MySchedulingConfigurer implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addFixedRateTask(() -> {
System.out.println("Fixed Rate Task executed at " + System.currentTimeMillis());
}, 5000);
taskRegistrar.addCronTask(() -> {
System.out.println("Cron Task executed at " + System.currentTimeMillis());
}, "0 0/1 * * * ?");
}
}
上述例子中,通过实现 SchedulingConfigurer
接口并重写 configureTasks
方法,手动配置了定时任务。addFixedRateTask
和 addCronTask
方法分别用于添加按照固定时间间隔和 Cron 表达式执行的任务。
选择哪种方式取决于你的喜好和项目需求。使用 @Scheduled
注解更为简单,适用于简单的定时任务需求。如果需要更灵活的配置或者动态地添加定时任务,可以选择实现 SchedulingConfigurer
接口。
Was this helpful?
0 / 0