spring有两种执行定制调度的机制
一种是使用JDK 的TimerTask,在spring里面配置类似Timer的时间配置,但是这种方法不能准确设置一个起始时间。
另一种是使用spring + quartz实现,,当有任务触发时,spring会去调用quartzJob的execute()方法
这里使用第二种方法做一个实例
定时调度的任务执行类,需要导入一个quartz.jar包,去网上可以下载一个
----------------------------------------------------------------------------------------------------------------------------------
import org.springframework.scheduling.quartz.*;
import com.huatech.statistic.data.StatisticService;
public class StatTesk extends QuartzJobBean{
private StatisticService statisticService;
public void setStatisticService(StatisticService statisticService) {
this.statisticService = statisticService;
}
//这个函数是调度任务执行的入口
protected void executeInternal(JobExecutionContext jobExecutionContext) throws org.quartz.JobExecutionException {
//在这里面可以写需要定时执行的代码
}
}
----------------------------------------------------------------------------------------------------------------------------------
spring配置文件里面只需要配置如下几个主要参数就可以了:
----------------------------------------------------------------------------------------------------------------------------------
<beans>
<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<!--下面是你要执行定时执行的类路径-->
<value>com.huatech.statistic.timer.StatTesk</value>
</property>
<property name="jobDataAsMap">
<map>
<!--这儿可以把自己写的BEAN注入到执行类,我这里面注入了自己的BEAN statisticService-->
<entry key="statisticService">
<ref bean="statisticService" />
</entry>
</map>
</property>
</bean>
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="reportJob" />
</property>
<!--这儿配置起始执行需要延迟多长时间-->
<property name="startDelay">
<value>1000</value>
</property>
<!--这儿配置每次执行的间隔时间-->
<property name="repeatInterval">
<value>2000</value>
</property>
</bean>
<!-- 配置一个触发器 -->
<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="reportJob" />
</property>
<!--这儿可以准确配置任务执行的时间,如下面为每天的21:01:00执行任务-->
<property name="cronExpression">
<value>0 1 21 * * ?</value>
</property>
</bean>
<!-- 添加上面配置好的触发器,可添加多个 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger" />
</list>
</property>
</bean>
</beans>
---------------------------------------------------------------------------------------------------------------------------------
下面是配置触发器触发时间的一些例子:
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
分享到:
相关推荐
这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...
本篇文章将详细探讨如何利用Spring来实现定时调度和定时器功能。 首先,Spring提供了两种主要的方式来实现定时任务:`Spring Task`(也称为`Task Execution and Scheduling`)和`Quartz Scheduler`。这里我们将重点...
Spring的定时调度功能使得开发者能够方便地实现周期性任务,无需深入理解底层复杂的定时器机制。下面,我们将深入探讨Spring的定时调度相关知识点。 1. **Spring Task模块** Spring的定时调度功能主要由Spring ...
在本文中,我们将探讨Spring中的两种主要方法:使用Spring Task(也称为Spring的定时调度任务)和集成Quartz组件。 1. **Spring Task(Spring内置定时任务)** Spring Task是Spring框架内置的轻量级定时任务解决...
总结起来,Spring动态定时调度任务通过结合Quartz和Spring的集成,实现了任务执行时间的灵活性。用户可以根据需求动态地调整任务的触发时间和频率,而无需修改代码或重启服务。这大大提高了系统的可扩展性和适应性,...
Spring Quartz 定时调度是Java应用中广泛使用的任务调度框架,它允许开发者在Spring应用程序上下文中定义和管理定时任务。这个jar包包含了Spring与Quartz的整合,使得开发者能够利用Quartz的强大功能,同时享受...
接下来,我们可以通过实现`Runnable`接口创建任务,然后使用`TaskExecutor`执行,或者通过实现`@Scheduled`注解的类或方法来创建定时任务,利用`TaskScheduler`调度。 ```java @Service public class MyTaskService...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Spring的定时调度功能则为企业级应用提供了强大的任务...了解并熟练掌握Spring的定时调度和Quartz的使用,对提升企业级应用的自动化水平具有重要意义。
Spring的任务调度模块使得开发者能够在应用中轻松地定义和执行定时任务,极大地提高了代码的可维护性和灵活性。 标题"Spring 任务调度"涵盖了Spring框架中的两个主要组件:Spring Task和Quartz Scheduler。Spring ...
本资料“Spring实现任务调度”将深入探讨如何在Spring中设置和管理定时任务。 首先,我们需要理解Spring中的任务调度机制。Spring通过其`Task`模块提供了任务调度的功能,主要由两个核心组件构成:`TaskExecutor`和...
本篇文章将探讨如何在Spring中实现定时调度,并将调度信息持久化到数据库中,这在实际业务场景中非常重要,因为能够确保任务的稳定性和可管理性。 首先,我们需要理解Spring的定时任务调度机制。Spring提供了`@...
本文主要探讨了Spring中实现定时任务的三种主要方法:Java的`java.util.Timer`、Quartz库以及Spring自身的Task调度器。 首先,Java的`java.util.Timer`是一个基础的定时任务工具,它可以按照设定的频率执行任务,但...
在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...
总的来说,Spring的定时任务功能强大且易于使用,通过合理的配置和jar包的集成,我们可以轻松地实现各种定时任务需求,无论是简单的周期性任务还是复杂的调度逻辑。在项目中正确地引入这些jar包,可以极大地提高开发...
这个“spring 任务调度实现代码例子”很可能是包含了一些示例代码,用于演示如何在Spring应用中配置和使用任务调度。下面将详细解释Spring任务调度的关键概念和实现方法。 1. **Spring Task模块** Spring Task是...
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
Spring Quartz 是一个强大的开源任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在Spring框架中集成Quartz,可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming...
虽然Spring Batch不直接提供定时任务调度,但它可以与Spring的`TaskScheduler`或Quartz结合使用来实现定时启动批处理作业。Spring Batch支持多种类型的读写器和处理器,适用于大量数据的导入导出、数据库更新等场景...
在Spring框架中,定时任务是实现系统自动化运行关键任务的重要工具。Spring提供了多种方式来创建和管理定时任务,...在chapter13目录下的文件可能包含了这些源码示例,你可以逐一研究,加深对Spring定时任务的理解。
在非Web项目中实现Spring定时任务,主要步骤如下: 1. **配置Spring Task**:在Spring的配置文件(如`applicationContext.xml`或使用Java配置类)中,我们需要启用任务调度功能并配置相应的执行器或调度器。例如,...