• SchedulingConfigurer教程,怎么使用Spring自带的可扩展定时任务调度接口


    简介:

               SchedulingConfigurer 是 Spring 框架中的一个接口,用于配置任务调度(scheduling)的相关设置。在 Spring 中,任务调度通常通过 Spring 的任务调度模块(Task Scheduling)来实现,其中就涉及到一些配置和定制的需求。SchedulingConfigurer 接口提供了一种灵活的方式来定制任务调度的行为。

    接口定义了一个方法:

    这是一个函数式接口,通过实现这个接口,你可以在应用程序启动时配置任务调度的行为。你可以使用这个接口来添加、修改或删除任务,也可以配置任务执行的线程池等相关设置。通常,ScheduledTaskRegistrar 对象是通过 Spring 容器自动注入的,你可以在 configureTasks 方法中对其进行配置。

    举例:

    1. @Configuration
    2. @EnableScheduling
    3. public class MySchedulingConfigurer implements SchedulingConfigurer {
    4. @Override
    5. public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    6. taskRegistrar.addFixedRateTask(() -> {
    7. // 定时任务的具体逻辑
    8. System.out.println("Scheduled task executed!");
    9. }, 1000); // 设置定时任务执行的间隔为1000毫秒
    10. }
    11. }

    这个方法中,ScheduledTaskRegistrar 是 Spring 框架中用于注册和管理定时任务的一个类,它提供了一些方法用于配置任务调度的行为,以下是其中几个方法的简要说明:

    动态定时任务(高级用法):

    如何动态的设置调度时间呢?参考下面的例子: 

    1. @EnableScheduling
    2. @Component
    3. public class FDWSchedulingConfigurer implements SchedulingConfigurer {
    4. @Override
    5. public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    6. //添加动态定时任务和触发器
    7. taskRegistrar.addTriggerTask(()->{
    8. Random random = new Random();
    9. int a = random.nextInt(5);
    10. System.out.println("随机数为:"+a);
    11. try {
    12. Thread.sleep(a*1000L);
    13. } catch (InterruptedException e) {
    14. e.printStackTrace();
    15. }
    16. System.out.println("Scheduled task executed!"+new Date());
    17. },triggerContext -> {
    18. //每秒种执行一次
    19. String cron = "* * * * * ? ";
    20. //上一次的任务执行完成后,下一次执行开始的时间才会计算出来
    21. return new CronTrigger(cron).nextExecutionTime(triggerContext);
    22. });
    23. }
    24. }
  • 相关阅读:
    @SpringBootApplication注解SpringBoot深度理解(课时八)
    CSAPP-BombLab详解
    矩阵分析与应用(20)
    Java基础复习巩固(二)
    [附源码]计算机毕业设计JAVAjsp大学生兼职招聘网站
    mybatis 注解查询一对多,一对一
    解决Mac配置maven环境后,关闭终端后环境失效的问题(适用于所有终端关闭后环境失效的问题)
    金融私有云IAAS领域、云平台领域、架构领域、新技术领域的技术展望
    opencv可视化图片-----c++
    开发一个简单的http模板之序章
  • 原文地址:https://blog.csdn.net/weixin_44853310/article/details/134424828