Spring框架中@Scheduled注解的使用示例

简介: 以上步骤和例子提供了Spring框架中 `@Scheduled`使用的具体方法,允许开发者灵活地进行任务调度。通过结合不同的属性,可以精确控制方法的调度策略,以满足不同场景下的需要。

在Spring框架中,@Scheduled注解是用于标记在固定时间执行的方法。这一特性常用于执行定时任务,比如数据库的定期清理、读取和汇总数据等。要在Spring应用程序中使用 @Scheduled注解,首先需要确保已经在配置文件中启用了任务调度。这通常通过在一个配置类上添加 @EnableScheduling注解来完成。

下面是使用 @Scheduled注解的步骤与示例:

1. 启用调度配置

在配置类上使用 @EnableScheduling注解来激活调度功能:

@Configuration
@EnableScheduling
public class SchedulerConfig {
    // 其他Bean定义
}
​

2. 创建任务方法

创建一个带有 @Scheduled的方法。此方法应是无参数的,而且返回类型应该是 void

@Component
public class ScheduledTasks {

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        System.out.println("当前时间:" + LocalDateTime.now());
    }
}
​

@Scheduled注解中,有几个参数可以用来定制任务的执行方式:

  • fixedRate:定义方法执行的间隔时间,上面的示例表示每5秒执行一次。
  • fixedDelay:在方法执行完毕后等待一定时间再次执行。
  • initialDelay:在第一次执行方法之前等待的时间。
  • cron:使用cron表达式来定义执行规则,比如 "0 * * * * ?"表示每分钟的0秒执行任务。

    3. 示例:使用Cron表达式

下面是一个使用cron表达式的例子,假设我们想在每天下午2点执行一个任务:

@Component
public class DailyTask {

    @Scheduled(cron = "0 0 14 * * ?")
    public void performDailyJob() {
        System.out.println("执行日常任务:" + LocalDateTime.now());
    }
}
​

cron表达式由6或7个空格分隔的时间字段组成,表示执行任务的时刻或者周期:

  • 秒 (0 - 59)
  • 分 (0 - 59)
  • 时 (0 - 23)
  • 日 (1 - 31)
  • 月 (1 - 12 或 JAN - DEC)
  • 星期几 (0 - 7 或 SUN - SAT,其中0或7表示星期天)
  • 年(可选,留空则为每年)

4. 使用fixedDelay和initialDelay组合

如果需要在任务执行完成后等待一段时间后再次执行,并且需要延迟第一次执行,可以组合使用 fixedDelayinitialDelay属性:

@Component
public class DelayedTask {

    @Scheduled(fixedDelay = 10000, initialDelay = 5000)
    public void executeWithDelay() {
        System.out.println("执行有延迟的任务:" + LocalDateTime.now());
        // 模拟任务执行时间
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
​

以上示例展示了怎样设置一个初始延迟,在程序启动后5秒执行第一次,之后任务完成后每隔10秒再执行一次,即使任务的执行时间为3秒。

以上步骤和例子提供了Spring框架中 @Scheduled使用的具体方法,允许开发者灵活地进行任务调度。通过结合不同的属性,可以精确控制方法的调度策略,以满足不同场景下的需要。

目录
相关文章
|
3天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
13天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
523 205
|
5天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
822 157
|
11天前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
|
5天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
699 47
下一篇
oss云网关配置