目前项目中的定时任务使用的是Spring+Quartz的方式,记录一下。
1:spring配置文件,比如spring-mvc-timeTask.xml
配置内容如下:
在配置文件中,配置了定时调度器schedulerFactory,配置了Trrigger,,比如msgSendTaskCronTrigger,配置了Scheduler,比如msgSendTaskJob。
2:Scheduler的配置
配置了执行定时任务的Trrigger,Scheduler包含一个Trigger列表,每个Trigger表示一个作业。
3:Trigger的配置
指定了执行该Trrigger的计划,指定了执行频率,比如<property name="cronExpression" value="0 0/1 * * * ?" />。同时指定了该定时任务执行的类,比如<property name="jobDetail" ref="msgSendTaskJob" />。
另外,DataBaseCronTriggerBean继承自spring框架提供的org.springframework.scheduling.quartz.CronTriggerBean,在DataBaseCronTriggerBean中可重写父类中的方式,实现自己特殊的业务处理。
说明:
1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
字段名 允许的值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12 or JAN-DEC , - * /
周几 1-7 or SUN-SAT , - * ? / L C #
年 (可选字段) empty, 1970-2099 , - * /
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
2)Cron表达式范例:
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
4:JobDetail的配置
该配置配置了执行定时任务的业务类,比如<property name="targetObject" ref="msgSendJob" />,指定了执行该类的方法,比如<property name="targetMethod" value="sendMsg" />,同时,<property name="concurrent" value="true" />配置表示是否允许任务并发执行。表示配置的定时作业可并发执行,当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程。
5:配置业务类
可在配置文件中配置,比如
<bean id="msgSendJob" class="com.chrhc.project.sc.message.entity.MsgSendJob"/>
也可以同时标注的形式指定,比如:
同时,该类有步骤4中指定的执行方法,sendMsg。
第二种引用业务类的形式需要在beans中有相应配置,
在<Beans>中设置default-autowire="byName"的属性。能通过Bean名称自 动注入。
而第一种引用业务类的方式却不需要,
在<Beans>中不能够设置default-autowire="byName"的属性,否则后台会报 org.springframework.beans.factory.BeanCreationException错误,这样就不能通过Bean名称自 动注入,必须通过明确引用注入
6:定义业务类
书写定时任务需要执行的动作。
注意:
在Spring配置和Quartz集成内容时,有两点需要注意
1、在<Beans>中不能够设置default-lazy-init="true",否则定时任务不触发,如果不明确指明default-lazy-init的值,默认是false。
相关推荐
spring+springMVC+mybatis+quartz动态定时任务
Spring+Quartz实现定时任务的配置方法.rar
基于SSM+quartz的定时任务管理demo
在spring+hibernate的框架中定时操作数据库,主要是拿到sessionFactory,不会出现no session 和transaction no-bound等问题,由sessionFactory完成对数据的操作,有些包是没有用的,有兴趣的可以自己删除掉
spring+quartz的定时任务,希望能帮到大家!
spring+quartz定时小例子,架包+文档 我自己整理的
本项目实现对quartz定时任务的增加、停止、恢复等功能。前端为jQuery+ bootstrap实现可视化操作,附带有mybatis分页插件应用
利用quartz动态操作定时任务,所有配置信息扔到数据库合理管理,同时把运行日志自动添加数据库表中。
上一次传错了资源了,这个是正确的,包含quartz动态定时任务的
Spring + quartz 定时任务修改定时时间不重启服务
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
spring+quartz实现动态设置定时任务,自己的例子+心得+sql语句
里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例
基于Spring的Quartz动态定时任务增删改查,代码简洁。后端采用SpringMvc+Spring+Mybatis+Quartz,前端采用Bootstrap框架,数据库采用MySQL;完成定时任务动态任务初始化,增删改查
Spring+Quartz实现定时任务的demo,对应的博客地址为: http://blog.csdn.net/u010397369/article/details/17465649
java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...
Quartz学习文档 Spring + Quartz配置详细实例 jar包 Quartz时间格式设置
Spring+Quartz实现任务调度的小例子.本来不要资源分的,可是CSDN发布资源最低要求填写分值为1分,没办法了。
传统Spring+Quartz实现的定时器一般都是通过配置文件中配置的,这就意味着如果我们修改了定时任务的时间,就得重新启动一下Tomcat,而且每次新建一个任务就得在spring中添加相关的配置信息,非常麻烦。基于上面的...
Spring2.5+Quartz定时任务简单例子web工程 myeclipse 项目开发的,可直接导入运行