`
leozam
  • 浏览: 29389 次
社区版块
存档分类
最新评论

Spring-Task 动态配置CRON

 
阅读更多
Spring-Task是Spring框架自带的轻量级定时任务框架
直接集成在Spring框架内
无须额外JAR包
配置亦尤其简单
只需要在Spring配置文件中加入<task:annotation-driven/>即可
xml命令空间和schemaLocation别忘了加上如下代码:
xmlns:task="http://www.springframework.org/schema/task" 
http://www.springframework.org/schema/task 
http://www.springframework.org/schema/task/spring-task-3.0.xsd

之后再在相应的bean里需要定时执行的方法前加入注解@Scheduled(cron="...")即可定时执行任务
本次要讨论的是如何动态配置CRON,方法如下:
1.bean要上@EnableScheduling注解
2.bean要实现SchedulingConfigurer接口
3.看示例代码吧
import java.util.Date;

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;

@Component
@EnableScheduling
public class TaskJob implements SchedulingConfigurer{

	private static String cron;

	//修改之后的cron
	public static void setCron(String cron) {
		TaskJob.cron = cron;
	}

	public TaskJob() {  
		//默认的cron
		cron = "0/5 * * * * ?";  
	}

	@Override  
	public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {  
		taskRegistrar.addTriggerTask(new Runnable() {  
			@Override  
			public void run() {  
				//doSomething(); 
			}  
		}, new Trigger() {
			@Override
			public Date nextExecutionTime(TriggerContext triggerContext) {
				CronTrigger trigger=new CronTrigger(cron);
				return trigger.nextExecutionTime(triggerContext);
			}
		});  
	}  

}


可以通过调用TaskJob.setCron()方法来动态配置CRON表达式
若想停止定时任务执行,只需将CRON表达式设置为一个已过去的日期
如“* * * * * 2015”
记之以供日后查阅
分享到:
评论

相关推荐

    spring-task-4.2.xsd.zip

    5. `&lt;task:scheduled-tasks&gt;`:在此元素内声明多个`&lt;task:scheduled&gt;`,用于配置定时任务,可以指定cron表达式或其他触发策略。 6. `&lt;task:listener&gt;`:添加监听器来监听任务事件,例如任务开始、结束等。 理解并...

    Spring-task定时任务

    本文将深入探讨Spring-task的注解方式和XML配置方式的使用,以及如何在实际项目中进行实践。 ### 一、Spring-task简介 Spring-task,也称为Spring的Task Execution and Scheduling模块,提供了一个统一的接口来...

    spring之定时任务实现(spring-task和quartz等不同方式)

    Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...

    spring-boot-scheduled-task.zip

    这个名为"spring-boot-scheduled-task.zip"的压缩包很可能包含了一个完整的Spring Boot项目,用于演示或实践如何配置和使用Spring Boot的定时任务功能。在这个项目中,我们可以预期看到以下几个关键知识点: 1. **...

    Spring @Scheduled定时任务动态修改cron参数

    `@Scheduled`注解是Spring Framework中用于创建定时任务的重要工具,它允许开发者在不重启应用的情况下,实现定时任务的动态配置,特别是修改cron表达式来调整执行周期。 在Spring中,定时任务主要通过`@Scheduled`...

    spring-task-demo:Spring Task的一个Demo

    在实际开发中,Spring Task还支持更多的特性,例如任务调度策略(cron表达式)、任务执行的并发控制、任务执行监听器等。这些高级特性使得Spring Task能够应对各种复杂的定时任务需求。 总结来说,"spring-task-...

    spring-task-native

    Spring Task,也称为Spring的作业执行和调度模块,允许开发者在Spring应用中创建、配置和执行定时任务。它包括了`@Scheduled`注解来声明周期性任务,以及`TaskExecutor`接口来支持异步任务执行。这个框架使得开发者...

    Spring的定时器动态修改参数cron的值

    3. 对于动态获取和设置cron表达式,你可以使用Spring Cloud Config或其他配置中心来管理`MyTaskProperties`。这样,当配置中心的cron表达式发生变化时,可以通过`@RefreshScope`注解使Spring Boot应用感知到变化并...

    spring-scheduled

    我们将深入探讨如何通过XML配置、注解以及动态定时任务这三种方式来实现Spring中的定时任务。 首先,让我们从XML配置方式开始。在Spring早期版本中,XML配置是主要的配置手段。要使用XML配置实现定时任务,你需要在...

    spring定时任务关键jar包(齐全)

    6. **配置与启动**: 要使定时任务生效,你需要在Spring配置中启用定时任务扫描,并指定`TaskScheduler`的实现。这通常在配置类的`@Configuration`和`@EnableScheduling`注解下完成。 7. **测试和监控**: 对于定时...

    【百占百胜】-三创比赛,学习定时器的心路历程and基于spring-task实现定时任务简单介绍

    1. **配置Spring-Task**:在Spring的配置文件(如`spring-servlet.xml`)中,添加Spring-Task的命名空间。这样做的目的是告诉Spring我们要使用其内置的定时任务功能,无需引入额外的库。 ```xml ...

    基于SpringBoot和Spring自带的schedul-springboot-task-scheduled.zip

    而"基于SpringBoot和Spring自带的schedul-springboot-task-scheduled.zip"项目则涉及到了SpringBoot中的定时任务功能,即Spring的`scheduled`模块。这个压缩包可能包含了一个示例项目,用于演示如何在SpringBoot应用...

    spring基于task标签和通过xml配置实现任务的区别

    - `&lt;task&gt;`标签是Spring 3.0引入的特性,它简化了在Spring应用中配置定时任务的过程。你可以在Spring配置文件中直接声明`&lt;task:annotation-driven/&gt;`来启用对`@Scheduled`注解的支持。 - 使用`@Scheduled`注解,...

    springboot定时任务的动态开启关闭

    要实现动态开启和关闭定时任务,我们需要利用Spring的`TaskScheduler`接口和`@EnableScheduling`注解。首先,在配置类上添加`@EnableScheduling`注解来启用定时任务的调度: ```java @Configuration @...

    Springboot中使用数据库配置定时任务

    在Spring Boot应用中,我们可以利用其强大的自动化配置和Spring Task模块来实现基于数据库配置的定时任务。Spring Task是Spring框架的一部分,它提供了丰富的定时和调度功能,使得在Java应用中执行周期性任务变得...

    springtask 的使用方法和 cron 表达式解析

    本文将详细介绍 Spring Task 的使用方法和 Cron 表达式解析,通过示例代码和配置文件,帮助读者更好地理解和使用 Spring Task。 一、Spring Task 的使用方法 Spring Task 是一个基于 Java 的任务调度框架,提供了...

    定时任务相关技术实操-timed-task-practice.zip

    5. **Spring Framework (Java)**:Spring的Task模块提供了定时任务的支持,可以配合Spring Boot实现微服务中的定时任务。 三、编程语言中的定时任务实现 1. **Java**:除了使用Quartz,还可以使用Spring的`@...

    spring-support.jar

    在这个例子中,`MyTask`是我们的业务逻辑类,`myJob`是`QuartzJobBean`的实例,`myTrigger`则定义了一个CRON触发器,每隔5分钟执行一次`myJob`。 Spring的这种设计使得我们可以方便地控制作业的生命周期,比如在...

Global site tag (gtag.js) - Google Analytics