Spring Boot 集成 @EnableScheduling 实现定时任务详解

阿橙
阿橙
发布时间:2026-10-15| 4人浏览过
原创

在 Spring Boot 项目中实现定时任务(如定期查询数据库筛选异常数据)可通过内置的调度器完成。只需在启动类添加 @EnableScheduling 注解,并在任务类中使用 @Scheduled 配合 Cron 表达式即可精确控制执行周期。

启用定时调度功能

Spring Boot 默认不启用定时任务,需要在主启动类上添加 @EnableScheduling 注解来激活调度基础设施。

@SpringBootApplication
@EnableScheduling // 开启定时功能
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

定义定时任务执行逻辑

创建具体的任务类,必须确保该类被 Spring IoC 容器管理(通常使用 @Component 注解)。在需要定时的方法上标注 @Scheduled 并配置执行规则。

@Component
public class TestSchedulingTask {
    // cron 表达式:0/3 * * * * ?
    // 含义:从第0秒开始,每3秒执行一次
    @Scheduled(cron = "0/3 * * * * ?")
    public void test() {
        // 业务建议:实际开发中应注入 Service 层处理逻辑
        Date date = new Date(System.currentTimeMillis());
        String rule = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(rule);
        String format = simpleDateFormat.format(date);
        System.out.println(format);
    }
}

注意:每个带有 @Scheduled 的方法都必须独立指定规则。虽然本例仅输出时间戳,但在真实场景中,应通过 @Autowired 注入 Service 接口来完成复杂业务逻辑。

Cron 表达式深度解析

定时任务的精准控制依赖于 Cron 表达式。一个标准的七位 Cron 表达式从左到右分别代表:秒、分、时、日、月、星期、年(最后一位可省略,通常省略)。各字段的允许范围及通配符如下表所示:

字段范围允许的字符
秒(second)0-59,/-*
分(minute)0-59,/-*
小时(hour)0-23,/-*
日期(day of month)1-31
(需考虑月份天数差异)
,/-*?LW
月份(month)1-12
(可使用英文缩写)
,/-*
星期(day of week)1-7
(1为星期日)
,/-*?L
年(year)基本不用-

常用特殊字符说明

  • , (枚举):表示多值选择。例如 5,20 在秒字段中表示第5秒和第20秒触发。
  • / (步进):表示指定间隔。格式为“起始值/步长”,如案例中的 0/3 表示从第0秒开始,每隔3秒触发一次。
  • - (范围):表示数值区间。例如 10-20 表示10到20之间的所有时刻。
  • * (任意值):匹配该字段的所有可能值。例如分字段写 * 表示每分钟都生效。
  • ? (不限定):仅用于“日期”和“星期”字段。当你在其中一个字段指定了具体值,而另一个字段保持不确定时,用 ? 占位以避免冲突。例如每月2号触发且星期不限,则日期写“2”,星期写“?”。若星期也写 * 会导致每天都被触发从而产生 Bug。
  • L (Last):表示最后。在日期中表示当月最后一天;在星期中表示周的最后一天(星期六),或者结合数字使用如“3L”表示最后一个星期三。
  • W (工作日):表示离指定日期最近的工作日(周一至周五)。例如 9W 表示离本月9号最近的工作日:若9号是工作日则当天执行;若是周六则前移至周五;若是周日则后移至周一。

掌握上述规则通常足以应对大多数需求。对于复杂的场景,建议使用在线 Cron 生成工具辅助验证。

总结

本文涵盖了 Spring Boot 基础同步定时器的配置与 Cron 表达式的使用规范。在实际生产环境中,若涉及耗时较长的任务,可能需要进一步引入异步线程池以防止阻塞主调度线程。关于底层源码分析及异步调度的进阶应用,后续将另有文章详述。

以上就是 Spring Boot 简单实现定时器过程的详细内容,更多关于 Spring Boot 定时器资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。