spring的定时任务(@Scheduled)的几种使用方法

文章介绍了如何在Spring中启用和配置定时任务,包括使用@EnableScheduling开启调度,@Scheduled注解的fixedDelay、fixedRate和initialDelay属性的用法,以及如何通过cron表达式实现复杂的时间间隔设定。此外,提到了被调度方法的限制,即无返回值且不接受参数。
摘要由CSDN通过智能技术生成
  • 首先要启用对 @Scheduled 注释的支持,可以在 @Configuration 类中添加 @EnableScheduling ,如下:
@Configuration
@EnableAsync
@EnableScheduling
public class ScheduleConfig {
}
  • 将 @Scheduled 注解添加到方法中。例如,下面的方法每5秒(5000毫秒)调用一次,有一个固定的延迟时间,这意味着该时间段是从前面每次调用的完成时间开始计算的(也就是说这个方法调用完成之后再开始等待你设置的时间,到了之后再次执行该方法):
@Scheduled(fixedDelay = 5000)
public void doSomething() {
    // 需要执行的代码
}
  • 默认情况下,毫秒将用作固定延迟、固定速率和初始延迟值的时间单位。如果您想使用不同的时间单位,例如秒或分,可以通过@Scheduled中的timeUnit属性进行配置。
@Scheduled(fixedDelay = 5, timeUnit = TimeUnit.SECONDS)
public void doSomething() {
    // 需要执行的代码
}
  • 如果需要固定速率的执行,可以在注解中使用fixedRate属性。下面的方法每5秒钟调用一次(这个方法调用之后,无需等待方法调用完成,即开始等待你设置的时间,到了之后再次执行该方法):
@Scheduled(fixedRate = 5, timeUnit = TimeUnit.SECONDS)
public void doSomething() {
    // 需要执行的代码
}
  • 对于固定延迟和固定速率任务,可以通过指明方法首次执行前的等待时间来指定初始延迟:
@Scheduled(initialDelay = 1000, fixedRate = 5000)
public void doSomething() {
    // 需要执行的代码
}
  • 如果你要想一个更加全面的任务设置,还可以使用cron表达式的方法:
@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
    // 需要执行的代码,只在周一到周五执行
}

请注意,要调度的方法必须是空返回,并且不接受任何参数。如果该方法需要与应用程序上下文中的其他对象交互,则通常会通过依赖注入来提供这些对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值