定时任务基础概念
Spring框架提供了强大的定时任务支持,主要通过@Scheduled注解实现。定时任务在后台自动执行,适用于数据同步、报表生成、缓存刷新等场景。
核心注解配置
1. 启用定时任务
在配置类上添加@EnableScheduling注解:
@Configuration @EnableScheduling public class SchedulingConfig { // 配置类内容 }2. @Scheduled注解详解
基本用法:
@Component public class ScheduledTasks { // 固定速率执行,每5秒执行一次 @Scheduled(fixedRate = 5000) public void taskWithFixedRate() { // 任务逻辑 } // 固定延迟执行,上次任务完成后延迟3秒执行 @Scheduled(fixedDelay = 3000) public void taskWithFixedDelay() { // 任务逻辑 } // Cron表达式,每天中午12点执行 @Scheduled(cron = "0 0 12 * * ?") public void taskWithCronExpression() { // 任务逻辑 } }高级配置选项
1. 线程池配置
@Configuration @EnableScheduling public class SchedulerConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); threadPoolTaskScheduler.setPoolSize(10); threadPoolTaskScheduler.setThreadNamePrefix("scheduled-task-pool-"); threadRegistrar.setTaskScheduler(threadPoolTaskScheduler); } }2. 参数化定时任务
@Component public class DynamicScheduledTasks { @Scheduled(cron = "${task.cron.expression:0 0/5 * * * ?}") public void dynamicTask() { // 从配置文件读取Cron表达式 } }