扩展Spring Boot Web应用 - 实现简单的定时任务功

2019-11-30  本文已影响0人  nzdxwl

如果我们需要定时处理一些数据或者执行某个功能,但只是简单的定时任务时,我们可以使用Spring框架自己的定时调度器而不需要添加Quartz。

首先在启动类上面添加以下注解:
@Import(SchedulingConfiguration.class)
告诉应用程序我们要使用定时任务。

然后在启动类添加以下代码:

@Bean
public SchedulingConfigurer simpleTask() {
    return (taskRegistrar) -> taskRegistrar.addTriggerTask(
        () -> System.out.println("Simple Schedule Task:: " 
            + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))), 
        (triggerContext) -> { 
            return new CronSequenceGenerator("*/20 * * * * ?").next(new Date()); }
    );
}

这里创建一个SchedulingConfigurer的实现类,并在里面调用ScheduledTaskRegistrar的addTriggerTask方法,该方法两个参数一个是Runnable对象一个是Trigger对象,Runnable对象对应我们的定时业务逻辑,Trigger对象则是对应我们设置的定时表达式的定时触发器。以上实例是使用lambda表达式方式创建实现类,相对简洁,也可以自己定义实现类或使用内部类、匿名类实现。

完成后在命令行下执行以下命令启动:mvn clean compile spring-boot:run,正常启动完会在后台打印类似下面信息:

Simple Schedule Task:: 2019-11-30 22:41:40
Simple Schedule Task:: 2019-11-30 22:42:00
Simple Schedule Task:: 2019-11-30 22:42:20
...

这样一个简单的定时任务功能就实现了。

上一篇下一篇

猜你喜欢

热点阅读