Spring Task 与 WebSocket 在订单系统中的应用
在订单处理场景中,定时任务常用于处理超时未支付订单、每日报表统计等;而 WebSocket 则能解决 HTTP 单向通信的局限,实现服务端主动推送消息(如新订单提醒、催单通知)。本文将结合实战案例,讲解如何在 Spring Boot 项目中集成这两项技术。
一、Spring Task 入门与配置
Spring Task 是 Spring 框架内置的轻量级定时任务调度器,无需引入 Quartz 等第三方依赖,通过注解即可快速实现。它支持 Cron 表达式、固定延迟和固定频率等多种调度方式。
1. 开启定时任务支持
在启动类或配置类上添加 @EnableScheduling 注解:
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. 编写定时任务
使用 @Scheduled 注解标记需要定时执行的方法。常见的三种模式如下:
- 固定延迟:上次任务结束后等待指定时间再执行。
- 固定频率:每隔指定时间执行一次,不关心上次是否完成。
- 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());
}
/**
* 固定频率:每 3 秒执行一次
*/
@Scheduled(fixedRate = 3000)
public {
logger.info(, System.currentTimeMillis());
}
{
logger.info(, System.currentTimeMillis());
}
}


