在spring3 中的新引入的task 命名空间。可以部分取代 quartz 功能,配置和API更加简单,并且支持注解方式。但是如果需要使用比较复杂的任务调度。还是建议使用quartz。
第一步:
在Spring的相关配置文件中(applicationContext.xml或者是{project_name}_servelt.xml或者是独立的配置文件如XXX_quartz.xml)中配置并开启Spring Schedule Task.注意其中高亮的部分是必须的。
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
">
<mvc:annotation-driven />
<context:component-scan base-package="com.mytools.validator.engine" />
<!-- 启动定时器 -->
<task:annotation-driven/>
</beans>
第二步:
可以在类中的需要定时执行的方法下指定如下Annotation
@Scheduled(cron="0 33/3 * * * ?") //每小时的33分钟开始执行,每3分钟执行1次
public void start() throws ServletException {
validate();
}
备注:其实@Scheduled中可以指定如下3中时间表达式:
(1)fixedRate:每隔多少毫秒执行一次该方法。如:
@Scheduled(fixedRate=2000) // 每隔2秒执行一次
public void scheduleMethod(){
System.out.println("Hello world...");
}
(2)fixedDelay:当一次方法执行完毕之后,延迟多少毫秒再执行该方法。
(3)cron:详细配置了该方法在什么时候执行。cron值是一个cron表达式。如:
@Scheduled(cron="0 0 0 * * SAT")
public voidarchiveOldSpittles() {
// ...
}
到指定时间后,任务总是执行2次的解决方案:
这是因为我们很容易在一个基于Spring的Web工程中启动2个定时线程:
第一次:web容器启动的时候,读取applicationContext.xml(或者别的Spring核心配置文件)文件时,会加载一次。
第二次:Spring本身会加载applicationContext.xml(或者别的Spring核心配置文件)一次。
解决方案:将你的Task的相关配置独立出来并在web.xml中通过context-param加载。而不是通过spring加载。
1) 独立出Spring-Task,如新命名一个文件名叫cms_quartz.xml
2) 在web.xml中去加载该文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/cms-servlet.xml,classpath:cms-quartz.xml</param-value>
</context-param>
相关推荐
Spring Boot集成了Spring Framework的TaskExecution和TaskScheduling模块,使得我们可以方便地创建和管理定时任务。本文将深入探讨如何在Spring Boot中实现动态配置定时任务,并实现不重启项目就能开关或重启任务...
Spring框架提供了对任务调度的强大支持,其中Spring Quartz是一个常用的集成解决方案。本篇将深入探讨如何使用Java和Spring Quartz来配置和调度cron任务。 首先,我们需要理解Spring Quartz的核心组件。`Job`接口...
Spring定时任务(Scheduler)的串行、并行执行实现解析 Spring Framework提供了一个强大的任务调度器(Scheduler),可以用于实现各种类型的定时任务。其中,串行执行和并行执行是两种常见的任务执行模式。本文将...
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。...相比`java.util.Timer`,Quartz提供了更丰富的功能和更强的灵活性,是Java定时任务的首选解决方案。
标题 "shedule" 提到的是一个与调度相关的项目,很可能是一个 JavaScript 库或者框架,用于在应用程序中管理和执行定时任务。在 JavaScript 中,调度是非常重要的一环,因为它是基于事件循环的语言,允许开发者通过...
在交互式观察模式下启动测试运行器。 有关更多信息,请参阅有关的部分。 yarn build 将用于生产的应用程序构建到build文件夹。 它在生产模式下正确地捆绑了 React 并优化了构建以获得最佳性能。 构建被缩小,...
此扩展程序允许从UC Davis Schedule Builder导出到Google日历。 该扩展程序将“导出”按钮插入到Schedule Builder网页中。完成时间表后,点击导出按钮会将时间表导入Google日历。请阅读...
在"shedule_skill-master"压缩包中,很可能包含了实现这个技能的所有源代码和相关资源。 首先,Python在构建Alice技能时的角色可能包括以下几个方面: 1. **自然语言处理(NLP)**:Python中的库如spaCy、NLTK或...
基于websocket api和MQTT服务的HomeAssistant灌溉系统在不同的mqtt主题中以json格式创建灌溉计划。 当您单击网页中的发布时,它会通过websocket api... shedule2 max : 255 shedule3 : name : shedule3 max : 255 shedu
grsu-shedule-解析器 使用超级简单 该模块旨在解析 GRSU 计划页面。 数据- 是一个带有时间表的 html 页面,解析数据- 准备好的每周时间表。 var SheduleParse = require ( 'grsu-shedule-parser' ) ; SheduleParse...
综合来看,这个开源项目提供了一整套解决方案,帮助音乐学校有效地管理教学日程,同时鼓励社区参与,推动软件的不断优化。开源的特性使得这款日程管理工具能够适应多样化的环境,满足不同规模和类型的音乐教育机构的...
计划GitHub动作的实践(如何使用cron触发动作) 示例回购,以了解“ on.schedule”工作流程在GitHub Actions中如何工作。 以下安排好的工作流程在添加了评论。 请参阅的评论中的实际工作流程。
matlab说话代码时间表 用于水生植物生长系统的光继电器,由俄勒冈州波特兰市的每日日出和日落时间控制。 我们使用MATLAB代码从网站上读取每天的日出和日落时间(特别是对于波特兰或OR数据:)。...
关键时间旋转器 从带有期限限制请求的键数组中获取有效的键 用法 var Keytimerotator = require ( 'keytimerotator' ) ; var schedule = "0 * * * * *" ;... //after shedule get key from begin keys 安装 npm install
在提供的代码中,`shedule()` 函数实现了 HRN 算法。该函数首先遍历整个作业链表,对于每一个符合条件的作业(即作业所需的资源不超过当前可用资源),计算其响应比,并记录下最高的响应比及其对应的作业。一旦找到...
本文将详细介绍如何通过JavaScript实现关闭子窗体并刷新父窗体的多种方法。 首先,我们要理解JavaScript中的几个关键对象和属性。window对象代表了浏览器中打开的一个窗口,每个window对象都拥有一个opener属性,该...
代码中的`shedule()`函数实现了SJF算法的核心逻辑。它遍历作业链表,寻找当前可以执行的最短作业。如果找到符合条件的作业,则从链表中移除该作业,并更新系统资源(如内存、磁带驱动器和打印机的数量)。这一过程会...
3. 分析响应比高者优先算法,该算法首先计算每个作业的响应比,它是等待时间与运行时间的比值,然后选择响应比最高的作业进行处理。 4. 编写C语言程序实现这个算法,程序包括一个作业调度函数,该函数会遍历作业队列...
本文档主要介绍的是如何配置ArKaos MediaMaster 3.2.1与媒体服务器的连接,以便实现对视频层的控制。ArKaos MediaMaster是一款专业级别的媒体服务器控制软件,常用于舞台灯光、视觉效果的控制。以下是详细的配置步骤...