
Spring 定时任务_为什么你的 Spring Task 定时任务没有定时执行?
版权声明:本文出自侠梦的开发笔记公众号,欢迎转载或交流请联系。
前言
定时任务的使用,在开发中可谓是家常便饭了,定时发送邮件、短信。 避免数据库,数据
表过大,定时将数据转储。通知、对账等等。
当然实现定时任务的方式也有很多,比如使用 linux 下的 contab 脚本,jdk 中自带的 Timer
类。Spring Task 或是 Quartz 。
相信你也有过如下的疑问:
•
•
•
•
•
•
Spring Task 的 contab 的表达式 和 linux 下的 contab 有什么区别?
crontab 表达式记不住?
定时任务阻塞会有什么影响?
多个定时任务的情况下是如何运行的?
具有相同表达式的定时任务,他们的执行顺序如何?
为什么 async 异步任务没有生效?
所以这篇文章,我们来介绍一下,在 Spring Task 中, 定时任务的执行原理及相关问题。
演示环境为 Spring Boot 项目。
SpringBoot 定时任务的原理
相信绝大部分开发者都使用过 Spring Boot 为我们提供的定时任务的 Starter 和定时任务
的注解。所以我们来主要介绍一下 Spring Boot 实现定时任务的原理,和其相关注解的作
用。
Spring 在 3.0 版本后通过 @Scheduled 注解来完成对定时任务的支持。