@EnableScheduling 和 @Scheduled 的用法和讲解

15. @EnableScheduling 和 @Scheduled 的用法和讲解

在 Java 的 Spring Framework 中,@EnableScheduling 注解用于启用基于注解的定时任务。这使得你可以利用 @Scheduled 注解在指定的时间间隔或时间点执行任务。这通常用在需要定时执行任务的应用程序中,例如定时清理、定时报告、定时从远程服务器拉取数据等场景。

以下是如何在 Spring 应用程序中使用 @EnableScheduling 和 @Scheduled 的基本示例:

1. 开启调度支持**@EnableScheduling**

首先,你需要在一个配置类上添加 @EnableScheduling 注解来启用调度功能:【相当于主类】

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
public class SchedulingConfig {
    // 这个类体现可以留空,它的主要作用是开启调度支持
}

2. 定义定时任务@Scheduled

然后,你可以在任何 Spring 管理的 bean 中使用 @Scheduled 注解来定义定时任务。这里有几种不同的方式来指定任务的执行时间:

  • Fixed Rate:每隔固定时间执行一次,不考虑任务执行所需时间。
  • Fixed Delay:在任务执行完毕后等待固定时间再执行下一次。
  • Cron Expression:使用类似 Unix 系统的 cron 表达式来定义复杂的调度策略。
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {

    @Scheduled(fixedRate = 5000)
    public void performTaskFixedRate() {
        System.out.println("Fixed Rate Task - " + System.currentTimeMillis() / 1000);
    }

    @Scheduled(fixedDelay = 1000, initialDelay = 1000)
    public void performTaskFixedDelay() {
        System.out.println("Fixed Delay Task - " + System.currentTimeMillis() / 1000);
    }

    @Scheduled(cron = "0 15 10 * * ?")  // 每天上午10点15分执行
    public void performTaskCron() {
        System.out.println("Cron Task - " + System.currentTimeMillis() / 1000);
    }
}

在上面的例子中,我们创建了三个不同类型的定时任务。每个任务根据其配置在指定的时间执行。这种方式是非常强大的,可以满足大多数定时执行需求。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值