Spring 编程式定时任务

6 篇文章 0 订阅

(其实不单单事务有编程式和声明式,定时任务也有哦…)

Spring 声明式定时任务大家都用的很频繁并且很熟练了吧,通过@EnableScheduling@Schedule(cron)注解即可实现。

虽然声明式定时任务配合上强大的cron表达式已经可以满足我们的大多数需求了,但是如果说在程序运行期间我们需要更改定时任务的执行频率,通过编程式@Schedule注解是不容易去实现的。

为此Spring为我们提供了一个接口SchedulingConfigurer可以让定时任务在运行时更改执行频率,我们只需要一个实现了该接口的类,通过重写configureTasks(ScheduledTaskRegistrar taskRegistrar)方法来实现定时任务运行频率的修改:

@EnableScheduling
public class MySchedule implements SchedulingConfigurer {

    private static String expression = "0 0/10 * * * ?";

    public static void setExpression(String expression) {
        MySchedule.expression = expression;
    }

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(
                new Runnable() {
                    @Override
                    public void run() {
                        // 具体的定时任务
                    }
                },
                new Trigger() {
                    @Override
                    public Date nextExecutionTime(TriggerContext triggerContext) {
                        return new CronTrigger(expression).nextExecutionTime(triggerContext);
                    }
                }
        );
    }
}

如此便可以修改定时任务的执行频率,只需将该类的静态变量expression重新赋值即可:

MySchedule.setExpression("0 0/20 * * * ?" /* 新的cron表达式 */);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值