SpringMVC使用Cron表达式的定时器

SpringMVC的功能很强大,集成了Quartz定时器的功能。能够通过Cron表达式和简单的注解就实现定时运行任务的功能。

网上看到不少样例,可是都不是非常全。

闲话少说。首先要在springmvc.xml中加入以下几行:

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.2.xsd

有了这两行代码。就能够在配置文件里加入定时器配置的XML代码。样例例如以下:

还是在springmvc.xml里面,这两行不用再解释。让springmvc知道去哪里扫描带注解的文件:

<!-- 注解扫描包 -->

<context:component-scan base-package="com.cmsv2.controller" />

<!-- 第二个注解包。这里面仅仅有@Scheduled,所以不扫描controller -->

<context:component-scan base-package="com.cmsv2.schedule">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />

</context:component-scan>

<!-- 开启注解 -->

<mvc:annotation-driven/>

然后在以下加上:

<!-- 定时器配置

task:executor/@pool-size:能够指定运行线程池的初始大小、最大大小

task:executor/@queue-capacity:等待运行的任务队列的容量

task:executor/@rejection-policy:当等待队已满时的策略。分为丢弃、由任务执行器直接执行等方式

-->

<task:scheduler id="scheduler" pool-size="10" />

<task:executor id="executor" keep-alive="3600" pool-size="100-200"

queue-capacity="500" rejection-policy="CALLER_RUNS" />

<task:annotation-driven executor="executor" scheduler="scheduler" />

这几行从网上copy。

同一时候还要加入一个aopaliaance.jar,否则会报错:noClassDefoundError:org/aopalliance/aop/Advice

地址:
http://mirrors.ibiblio.org/pub/mirrors/maven2/aopalliance/aopalliance/1.0/

下载后add to buildpath。

至此配置工作完毕。

以下開始写代码:

<span style="font-family: Arial, Helvetica, sans-serif;">import java.util.Date;</span>
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component ;

@Component
public class ScheduledTest2 {

	@Scheduled(cron = "0 0/1 * * * ?")
	public void runFunction(){
		System.out.println(new Date() + " package.controller scheduled test --> mahaha") ;
	}

}

然后就OK了!每分钟运行一次~~~

參考:http://bbs.csdn.net/topics/260068512

http://www.2cto.com/kf/201311/257405.html

http://blog.csdn.net/xiao_wgs69/article/details/11269391

时间: 2024-11-05 03:37:31

SpringMVC使用Cron表达式的定时器的相关文章

Quartz cron 表达式(linux 定时器,java 定时任务,spring task定时任务)

Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别.区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级.许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异. 在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上.Quartz 用 cron 表达式存放执行计划.引用了 cron 表达式的 CronTrigger 在计划的时间里

Quartz的cron表达式 (spring定时器 crontab)

http://tangshuo.iteye.com/blog/184824 表达式位数最少六位,如每天凌晨一点启动:"0 0 1 * * ?" 顺序按   秒 分 时 日期 月份 星期 年份(可选)  排 字段 允许值 允许的特殊字符  秒 0-59 , - * /  分 0-59 , - * /  小时 0-23 , - * /  日期 1-31 , - * ? / L W C  月份 1-12 或者 JAN-DEC , - * /  星期 1-7 或者 SUN-SAT , - * 

spring cron表达式(定时器)

写定时器时用到,记录一下: Cron表达式是一个字符串,字符串以5或6个空格隔开,分开工6或7个域,每一个域代表一个含义,Cron有如下两种语法 格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year 或 Seconds Minutes Hours DayofMonth Month DayofWeek 每一个域可出现的字符如下: 代码Seconds:可出现,-  *  / 四个字符,有效范围为0-59的整数    Minutes:可出现

在线Cron表达式解析工具使用说明

在日常Java开发中,常常会用到quartz定时器,而定时器的Cron表达式比较难以理解,尤其是复杂的表达式,较难分析出是否周期频率正确. 这里,云码网推出Cron在线解析工具,方便大家在线生成Cron以及解析表达式的执行情况. 工具地址:http://www.everycoding.com/tools/cron.html 第一步.根据需求勾选执行频率,如图 第二步.点击按钮"运行",执行生成的Cron表达式,如图 通过运行控制,可看到此Cron定时器表达式未来的执行周期情况.

quartz cron表达式在线生成

最近使用了quartz定时器,有感于起cron表达式有点复杂,且无法实时判断定时时间是否正确,因此写了个在线表达式及根据表达式获得前10次执行时间. 访问地址如下:http://cron.g2room.com/ 使用如下: 打开主页如下: 点击cron配置或点击菜单栏,则进入到cron表达式配置界面: 界面分为5个部分:1.菜单栏.2.设置内容区.3.设置结果展示区.4.生成表达式展示区.5.表达式触发时间展示区. ?  菜单栏:展示cron表达式需要设置的字段项: ?  设置内容区:此区域为设

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

cron表达式的解释

cron表达式是什么 首先cron是表示计划任务.其次Oracle官网这样解释cron表达式: Cron expressions are used to configure instances of CronTrigger, a subclass of org.quartz.Trigger. A cron expression is a string consisting of six or seven subexpressions (fields) that describe individu

Cron 表达式

cron的表达式被用来配置CronTrigger实例. cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表.这些子表达式是分开的空白,代表:  Seconds  Minutes  Hours  Day-of-Month  Month  Day-of-Week  Year (可选字段) 例  "0 0 12 ? * WED" 在每星期三下午12:00 执行, 个别子表达式可以包含范围, 例如,在前面的例子里("WED")可以替换成 "MON

Cron表达式说明

CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“. 即便如此,SimpleTrigger一样,CronTrigger拥有的startTime指定的时间表时生效,指定的时间表时,应停止(可选)结束时间