在 Spring Boot 中,你可以使用 @Scheduled 注解或者实现 SchedulingConfigurer 接口来实现定时任务。以下是两种方式的简单示例:
1. 使用 @Scheduled 注解:
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 表达式来定义执行的时间规则。
2. 实现 SchedulingConfigurer 接口:
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