Spring Task 定时任务实战
在订单处理场景中,我们经常需要执行一些后台任务,比如清理超时未支付订单、发送催单通知等。Spring Task 是 Spring 框架内置的轻量级调度工具,无需引入 Quartz 等第三方依赖,通过注解即可快速实现。
一、核心配置与入门
要在项目中启用定时任务支持,只需在启动类或配置类上添加 @EnableScheduling 注解。
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
接下来定义具体的任务逻辑。使用 @Scheduled 注解标记方法,并指定触发规则。常见的调度方式有三种:
- 固定频率 (
fixedRate):每隔 N 毫秒执行一次,不考虑上次任务是否完成。 - 固定延迟 (
fixedDelay):上次任务结束后,再等待 N 毫秒执行下一次。 - Cron 表达式:灵活指定时间,如每天凌晨执行。
@Component
public class ScheduledTasks {
private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
/**
* 固定延迟:上次执行完成后间隔 5 秒执行
*/
@Scheduled(fixedDelay = 5000)
public void taskWithFixedDelay() {
logger.info("FixedDelay Task - 当前时间:{}", System.currentTimeMillis());
}
/**
* Cron 表达式:每分钟的第 10 秒执行
*/
@Scheduled(cron = "10 * * * * ?")
public void taskWithCron() {
logger.info(, System.currentTimeMillis());
}
}


