定时任务@Scheduled用法及其参数使用

 更新时间:2024年08月02日 08:49:29   作者:Mr朱墨  
这篇文章主要介绍了定时任务@Scheduled用法及其参数使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

定时任务@Scheduled用法及参数

@Scheduled是Spring框架中的一个注解,用于标记一个方法为定时任务。

当使用@Scheduled注解时,Spring会自动创建一个定时任务的执行器(Scheduler),并在指定的时间间隔内执行被标记的方法。

使用@Scheduled注解时,可以通过设置不同的属性来定义定时任务的行为,例如:

  • fixedRate:固定频率执行任务,表示每隔指定的时间间隔执行一次任务。
  • fixedDelay:固定延迟执行任务,表示在上一次任务执行完成后,等待指定的时间间隔再执行下一次任务。
  • initialDelay:初始延迟时间,表示在第一次执行任务之前的等待时间。
  • cron:使用Cron表达式定义任务的执行时间,可以更灵活地控制任务的执行时间。

具体实现:

/**
 * 定时任务001:@Scheduled
 * springboot自带的简易定时任务实现
 *
 * @author zhupeng
 * @Date 2022/1/7 9:53 AM
 */
@Component
public class ScheduleTask {
    private String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

    // 任务间隔3s执行依次【不包括任务执行时间】,延迟1s后执行
    @Scheduled(initialDelay = 1000, fixedDelay = 3000)
    public void fixedDelay() {
        System.out.println("fixedDelay:" + this.date);
    }

    // 每隔间隔3s执行依次【包括任务执行时间】
    @Scheduled(fixedRate = 3000)
    public void fixedRate() {
        System.out.println("fixedRate:" + this.date);
    }
    
    // cron表达式,Quartz更详细
    @Scheduled(cron = "*/5 * * * * *")
    public void cron() {
        System.out.println("cron:" + this.date);
    }
}

Spring框架中@Scheduled注解失效问题

问题描述

在Spring框架的Web项目中,有一个业务功能需要每天执行一次,使用了@Scheduled注解执行定时任务,但是出现了定时任务不执行的情况

尝试的方式

类上加@EnableScheduling注解、加实现SchedulingConfigurer接口的配置类、修改cron表达式

都失败了

最终查到的解决方式

在Spring的配置文件中,添加配置:

  • 1.加命名空间

xmlns添加:

xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation添加 :

http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd"
  • 2.启动注解驱动
<task:annotation-driven scheduler="dataScheduler"/>
  • 3.开启任务调度器,并配置线程池大小
<task:scheduler id="dataScheduler" pool-size="5"/>
  • 4.然后就可以使用@Scheduled注解了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java自定义异常类详解及示例说明

    Java自定义异常类详解及示例说明

    本文详细讲述了Java中自定义异常类的原理、使用场景及创建方法,包括为何使用自定义异常、如何创建和实例化,以及文件处理、用户认证和业务逻辑中的应用示例,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • 面试必问的Java 运行时架构JVM详解

    面试必问的Java 运行时架构JVM详解

    本文主要介绍了Java虚拟机(JVM的结构、运行时数据区、执行引擎等相关知识,JVM主要由类加载器、运行时数据区、执行引擎和本地接口等组成,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • Mybatis实现批量更新数据(批量update)

    Mybatis实现批量更新数据(批量update)

    本文介绍了MyBatis批量更新数据的两种方案,方案一使用foreach标签拼接多条update语句,通过在数据库连接URL中指定allowMultiQueries参数值为true来支持多条语句的执行,提高效率;方案二拼接成一条SQL,但SQL语句会非常复杂且难以阅读,不推荐使用
    2026-04-04
  • 史上最全Java8日期时间工具类(分享)

    史上最全Java8日期时间工具类(分享)

    这篇文章主要介绍了史上最全Java8日期时间工具类(分享),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 分析Java设计模式之组合模式

    分析Java设计模式之组合模式

    组合模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。它的本质是统一叶子对象和组合对象。它的目的是让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作
    2021-06-06
  • 解决SpringBoot下Redis序列化乱码的问题

    解决SpringBoot下Redis序列化乱码的问题

    这篇文章主要介绍了解决SpringBoot下Redis序列化乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • nacos单机本地配置文件存储位置方式

    nacos单机本地配置文件存储位置方式

    这篇文章主要介绍了nacos单机本地配置文件存储位置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • SpringBoot的内嵌和外置tomcat的实现方式

    SpringBoot的内嵌和外置tomcat的实现方式

    本文主要介绍了在Spring Boot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • Spring实战之使用Resource作为属性操作示例

    Spring实战之使用Resource作为属性操作示例

    这篇文章主要介绍了Spring实战之使用Resource作为属性,结合实例形式分析了spring载人Resource作为属性相关配置与使用技巧,需要的朋友可以参考下
    2020-01-01
  • Spring之@Qualifier注解的具体使用

    Spring之@Qualifier注解的具体使用

    本文主要介绍了Spring之@Qualifier注解的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08

最新评论