`
李楷呀
  • 浏览: 4236 次
社区版块
存档分类
最新评论

SchedulingConfigurer 接口实现定时任务

阅读更多

        SchedulingConfigurer  接口实现定时任务比注解方式更加灵活,可以动态修改任务执行的周期,规则可以存档到数据中或者配置文件中,任务执行的时候从中获取即可,具体如下:

       

        import java.time.LocalDateTime;

        import org.springframework.context.annotation.Configuration;

        import org.springframework.scheduling.annotation.EnableScheduling;

        import org.springframework.scheduling.annotation.SchedulingConfigurer;

        import org.springframework.scheduling.config.ScheduledTaskRegistrar;

        import org.springframework.scheduling.support.CronTrigger;

        import org.springframework.util.StringUtils;

        @Configuration      //1.主要用于标记配置类,兼备Component的效果。

        @EnableScheduling   // 2.开启定时任务

        public class TestInterfaceJob implements SchedulingConfigurer {

 

             public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {

                    // TODO Auto-generated method stub

                    taskRegistrar.addTriggerTask(

                           //添加任务内容,此处是具体的执行程序

                          () -> System.err.println("接口实现定时任务: " + LocalDateTime.now()),

                          //设置执行周期(Trigger)

                          triggerContext -> {

                                  //执行周期,此处是任务的执行周,可以动态从数据库或者配置文件获取

                                  String cron = "0/2 * * * * ?";

                                   //合法性校验.

                                  if (StringUtils.isEmpty(cron)) {

                                     // Omitted Code ..

                                  }

                                  //2.3 返回执行周期(Date)

                                   return new CronTrigger(cron).nextExecutionTime(triggerContext);

                             }

                     );

              }

          }

       此种方式比注解更加方便,定时任务规则修改时不用重新发布程序,可以直接修改数据库中的配置即可,更加灵活方便,效果如下:

 

 

接口实现定时任务: 2019-12-13T18:05:34.002

接口实现定时任务: 2019-12-13T18:05:36.002

接口实现定时任务: 2019-12-13T18:05:38.001

接口实现定时任务: 2019-12-13T18:05:40.001

接口实现定时任务: 2019-12-13T18:05:42.001

接口实现定时任务: 2019-12-13T18:05:44.001

接口实现定时任务: 2019-12-13T18:05:46.002

接口实现定时任务: 2019-12-13T18:05:48.001

接口实现定时任务: 2019-12-13T18:05:50.001

接口实现定时任务: 2019-12-13T18:05:52.002

接口实现定时任务: 2019-12-13T18:05:54.002

接口实现定时任务: 2019-12-13T18:05:56.001

 

 

1
2
分享到:
评论

相关推荐

    Spring SchedulingConfigurer 实现动态定时任务【完整源码+数据库】

    Spring提供了多种方式来实现定时任务,其中一种是通过`SchedulingConfigurer`接口。本篇将详细介绍如何利用`SchedulingConfigurer`实现动态定时任务,并结合完整的源码和数据库设置,帮助你更好地理解和应用这一功能...

    详解SpringBoot 创建定时任务(配合数据库动态执行)

    在SpringBoot中实现动态定时任务通常会使用SchedulingConfigurer接口。通过实现该接口中的configureTasks方法,可以获取到TaskScheduler的实例,并根据从数据库中读取的任务执行周期来动态地添加定时任务。 此外,...

    Spring定时任务

    Spring定时任务基于`@Scheduled`注解和`TaskScheduler`接口实现。`@Scheduled`用于标注需要定时执行的方法,而`TaskScheduler`则提供了更灵活的定时任务调度方式。 2. **启用定时任务** 要使用Spring定时任务,...

    SpringBoot基于数据库实现定时任务过程解析

    基于数据库的动态定时任务实现将定时任务配置在数据库,启动项目的时候,用mybatis读取数据库,实例化对象,并设定定时任务。如果需要新增,减少,修改定时任务,仅需要修改数据库资料,并重启项目即可,无需改代码...

    玩转SpringBoot之定时任务详解

    此时,可以使用Spring Boot提供的`SchedulingConfigurer`接口来实现动态定时任务。 ##### 1. 导入依赖包 为了实现动态定时任务,首先需要引入一些必要的依赖包。以下是一个包含Web、MySQL和MyBatis依赖的示例: ``...

    Spring boot开启定时任务的三种方式(源代码+sql文件)

    二、基于SchedulingConfigurer接口的方式 2.1数据库准备 2.2. 创建一个SpringBoot项目 2.3 项目结构 2.4 数据源基本配置:application.properties 2.5 mapper也就是dao: 2.6 task类:MyTask.java 2.7 使用上之前学...

    基于Springboot执行多个定时任务并动态获取定时任务信息

    基于Springboot框架,实现多个定时任务的执行,并且可以动态获取定时任务的信息。这种实现方式可以满足一些业务需要,例如需要使用多个不同的定时任务,并且每个定时任务中的定时信息是通过数据库动态获取的。 首先...

    spring2.0学习笔记+spring定时任务

    至于Spring的定时任务,它可以通过Spring的TaskExecutor接口或SchedulingConfigurer接口来实现。Spring 2.0引入了Spring Task模块,提供了一种在应用程序内部安排任务的方法。使用@Scheduled注解,我们可以轻松地...

    SpringBoot实现动态定时任务

    SpringBoot实现动态定时任务 在 SpringBoot 框架中,实现动态定时任务是非常重要的,特别是在需要执行一些定期任务时,如清除过期的校验码等。在 SpringBoot 中,实现动态定时任务有两种方式:使用 @Scheduled 注解...

    spring boot task实现动态创建定时任务的方法

    为了实现动态创建定时任务,我们可以通过实现 `SchedulingConfigurer` 接口来注册定时任务。在这个接口中,我们可以获取定时任务的执行时间,并根据需要动态调整定时间隔。 在我们的示例代码中,我们使用了 `...

    springboot实现多实例crontab抢占定时任务(实例代码)

    在`Kernel.java`中,我们重写了`SchedulingConfigurer`接口的`configureTasks`方法,设定了一个长度为4的定时任务线程池。这允许我们控制执行定时任务的线程数量。 ```java @Configuration public class Kernel ...

    Spring框架-SpringBoot-定时任务-深入教程.docx

    Spring框架的定时任务是开发中常见的一种功能,用于自动化执行一系列周期性任务。Spring Boot提供了对Spring Task的集成,使得在Spring Boot应用中配置和管理定时任务变得简单。本文将深入探讨Spring Boot中的定时...

    spring中定时任务管理.docx

    最常见的是通过注解`@Scheduled`,可以直接在方法上标注以实现定时任务。例如: ```java @Scheduled(cron = "0 0 5 * * ?") public void job1() { // 任务逻辑 } ``` 上述代码会在每天的5点整执行`job1`方法。 另...

    springboot schedule 解决定时任务不执行的问题

    Spring Boot 中的定时任务是使用 @Scheduled 注解实现的,该注解可以将方法设置为定时执行。但是,如果定时任务非常多或者有的任务很耗时,会影响到其他定时任务的执行,因为 Schedule 默认是单线程的,一个任务在...

    springBoot 创建定时任务过程详解

    然后,我们可以创建一个 AutoTaskFromDB 类来实现基于接口的定时任务,如下所示: ```java @Component @Slf4j public class AutoTaskFromDB implements SchedulingConfigurer { @Autowired protected CronMapper ...

    spring-boot通过@Scheduled配置定时任务及定时任务@Scheduled注解的方法

    "spring-boot通过@...Spring Boot 通过 @Scheduled 注解和 SchedulingConfigurer 接口提供了强大的定时任务功能,我们可以根据需要自定义定时任务的执行时间、执行频率、延迟执行等参数,以满足不同的业务需求。

    spring-boot 多线程并发定时任务的解决方案

    Spring Boot 提供了一个简单的方式来实现定时任务,使用 `@Scheduled` 注解可以轻松地实现定时任务。但是在实际开发中,我们需要实现多线程并发的定时任务,以提高任务的执行效率和系统的性能。下面我们将详细介绍 ...

    spring定时器代码部分实现

    这里,`@EnableScheduling`注解启用了定时任务的支持,而`AppConfig`类实现了`SchedulingConfigurer`接口,允许进一步自定义定时任务的行为。 ### 其他高级用法 除了基本的定时任务外,Spring还支持更复杂的定时...

    Spring实现动态修改时间参数并手动开启关停操作

    其中,Spring Task是Spring框架自带的一种轻量级的定时任务实现方式,它支持注解和配置文件两种方式来配置定时任务。 在Spring Task中,任务类需要使用@Component注解,并实现Runnable接口或使用@Scheduled注解来...

Global site tag (gtag.js) - Google Analytics