spring之quartz 定时任务cron时间动态改变

动态设置quartz定时任务的cron时间有:xml方式与数据库表方式,而且这两种方式在已有的定时任务上需增加大量的代码及数据表,所以在网上找了一种比较简单而且较为实用的方法,但这样的方式不够智能,每次修改定时任务时间后,都需要重新启动服务。若想自由控制项目中的定时任务执行可参考xx-job任务调度项目

动态设置quartz定时任务的cron时间是引用SchedulingConfigurer接口,并需要在实现类中增加注解@EnableScheduling。注:@EnableScheduling对Spring的版本要求比较高,spring版本需要使用4.2.5以上版本,若是低版本则无法生效。

1.先在配置文件中设置定时任务执行时间

#执行时间格式设置
conTestTime:0/20 * * * * ?

2.编写任务执行类

@Component
@EnableScheduling
public class QuertzJobTask implements SchedulingConfigurer {
    private static final Logger log = LoggerFactory.getLogger(QuertzJobTask.class);
    //读取配置文件中设置时间
    @Value("${conTestTime}")
    String indSchedulerJobTime;


    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        scheduledTaskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
                // 执行任务逻辑
                log.info("执行时间  :"+indSchedulerJobTime);
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                // 任务触发,可修改任务的执行周期
                CronTrigger trigger = new CronTrigger(indSchedulerJobTime);
                Date nextExec = trigger.nextExecutionTime(triggerContext);
                return nextExec;
            }
        });
    }
}

任务启动后,可以在控制台上查看到其执行的任务打印出的日志信息

 

转载于:https://my.oschina.net/u/2251646/blog/3093826

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值