Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间

不需要重启应用就可以动态的改变Cron表达式的值

import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
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.stereotype.Component;

@Lazy(false)
@Component
@EnableScheduling
public class DynamicScheduledTask implements SchedulingConfigurer {

    /**
     *  通过自动注入启动任务调度
     *
     *  @Autowired
     *  DynamicScheduledTask dynamicScheduledTask;
     *
     */

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    private static final String DEFAULT_CRON = "0 0/10 * * * ? ";
    private String cron = DEFAULT_CRON;

    /**
     * 获取任务执行规则
     * @return
     */
    public String getCron() {
        return cron;
    }

    /**
     * 设置任务执行规则
     * @param cron
     */
    public void setCron(String cron) {
        this.cron = cron;
    }

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(new Runnable() {
            @Override
            public void run() {
                // 任务逻辑
                logger.debug("dynamicCronTask is running...");
            }
        }, new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
                // 任务触发,可修改任务的执行周期
                CronTrigger trigger = new CronTrigger(cron);
                Date nextExec = trigger.nextExecutionTime(triggerContext);
                return nextExec;
            }
        });
    }
}
时间: 2024-12-20 03:54:13

Spring 注解 @Scheduled(cron = "0 0/10 * * * ? ") 任务调度动态改变时间的相关文章

spring注解scheduled实现定时任务

只想说,spring注解scheduled实现定时任务使用真的非常简单. 一.配置spring.xml文件 1.在beans加入xmlns:task="http://www.springframework.org/schema/task"以及在xsi:schemaLocation中加入 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd

spring注解@Scheduled中fixedDelay、fixedRate和cron表达式的区别

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/sch

Spring注解@Scheduled定时任务

本人为转载,原文在此http://blog.csdn.net/sd4000784/article/details/7745947 以前框架使用quartz框架执行定时调度问题. 老大说这配置太麻烦.每个调度都需要多加在spring的配置中. 能不能减少配置的量从而提高开发效率. 最近看了看spring的 scheduled的使用注解的方式进行调度. 感觉很方便.起码配置的东西少了很多. 所以留下来以备忘了. 首先要配置我们的spring.xml xmlns 多加下面的内容. [html] vie

spring注解说明之Spring2.5 注解介绍(3.0通用)

spring注解说明之Spring2.5 注解介绍(3.0通用) 注册注解处理器 方式一:bean <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 方式二:命名空间 <context:annotation-config /><context:annotationconfig /> 将隐式地向Spring容

【Spring】@Scheduled注解cron详解

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为      1  秒(0~59)      2  分钟(0~59)      3 小时(0~23)      4  天(0~31)      5 月(0~11)      6  星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)      7.年份(1970-2099)      其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小

@Scheduled(cron = &quot;0/5 * * * * *&quot;)将时间改为配置

有两种方法:第一种当然你可以把Scheduled写到xml文件中进行配置. 第二种在你的类前面添加 此处讲解第二种写法 第二种在你的类前面添加@PropertySource("classpath:root/test.props") 然后修改你的@Scheduled(cron="0/5 * * * * ? ") 为 @Scheduled(cron="${jobs.schedule}")最后在配置文件 test.props中 添加 jobs.sche

Spring 的@Scheduled注解实现定时任务运行和调度

首先要配置我们的spring.xml   ---  即spring的主配置文件(有的项目中叫做applicationContext.xml或context.xml) xmlns 多加以下的内容. [html] view plaincopy xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加以下的内容. [html] view plaincopy http://www.springf

spring注解方式实现定时器,并且cron表达式中不识别L的方法

1.Spring的配置: <beans xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!--开启这个配置,spring才能识别@

Spring 的@Scheduled注解实现定时任务执行和调度

首先要配置我们的spring.xml   ---  即spring的主配置文件(有的项目中叫做applicationContext.xml或context.xml) xmlns 多加下面的内容. [html] view plaincopy xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加下面的内容. [html] view plaincopy http://www.springf