欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Spring Task

Spring Task

2025/6/3 9:01:28 来源:https://blog.csdn.net/yuren_xia/article/details/148148908  浏览:    关键词:Spring Task

Spring Task 是 Spring 框架提供的轻量级任务调度工具,支持定时任务和异步任务。以下是其核心用法:


一、基础配置

1. 启用定时任务

在配置类中添加 @EnableScheduling 注解,启用定时任务功能:

@Configuration
@EnableScheduling
public class AppConfig {}

二、定时任务

1. 创建任务类

使用 @Component 标记类,并在方法上添加 @Scheduled 注解:

@Component
public class MyTask {// 每5秒执行一次(固定频率)@Scheduled(fixedRate = 5000)public void task1() {System.out.println("Fixed Rate Task: " + new Date());}// 上一次任务结束后,延迟3秒执行(固定延迟)@Scheduled(fixedDelay = 3000)public void task2() {System.out.println("Fixed Delay Task: " + new Date());}// 使用Cron表达式(每天12点执行)@Scheduled(cron = "0 0 12 * * ?")public void task3() {System.out.println("Cron Task: " + new Date());}
}
2. 参数说明
  • fixedRate:固定频率,单位毫秒。无论上一次任务是否完成,按固定间隔执行。
  • fixedDelay:固定延迟,单位毫秒。上一次任务完成后,间隔指定时间再执行。
  • cron:Cron表达式,支持复杂调度(如 0 0/30 * * * ? 表示每30分钟执行)。

三、Cron表达式语法

格式:秒 分 时 日 月 周 年(可选)

  • 示例:
    • 0 0 12 * * ?:每天中午12点执行。
    • 0 0/5 9-17 * * MON-FRI:工作日上午9点到下午5点,每5分钟执行。

四、异步任务

结合 @Async 实现异步执行,需配合线程池:

  1. 启用异步支持:
    @Configuration
    @EnableAsync
    public class AsyncConfig {}
    
  2. 定义异步任务:
    @Component
    public class AsyncTask {@Async@Scheduled(fixedRate = 5000)public void asyncTask() {// 异步执行的逻辑}
    }
    

五、XML配置方式(旧版)

applicationContext.xml 中配置:

<!-- 启用调度 -->
<task:annotation-driven /><!-- 定义任务 -->
<task:scheduled-tasks scheduler="myScheduler"><task:scheduled ref="myTask" method="task1" cron="0 0 12 * * ?" />
</task:scheduled-tasks><task:scheduler id="myScheduler" pool-size="5" />

六、线程池配置

默认单线程执行任务,可通过实现 SchedulingConfigurer 自定义线程池:

@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(Executors.newScheduledThreadPool(5));}
}

注意事项

  1. 线程安全:确保任务方法是线程安全的。
  2. 错误处理:任务内应捕获异常,避免任务终止。
  3. 动态任务:需通过 ScheduledTaskRegistrar 动态注册任务。

通过以上步骤,即可灵活使用 Spring Task 实现定时和异步任务调度。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词