SpringMvc整合Quartz实现定时任务项目源码

         项目中一直使用Quartz做定时任务,但是一直没有去仔细阅读详细参数配置说明以及它源码,最近花了一点时间做了一个整理。系统的看了一下源码实现并顺手做了一个简单的Demo。

一、说明

spring版本4.0.5、Quartz版本2.2.2
注意定时任务的配置需要spring-context-support-4.0.5.RELEASE.jar进行配置,所以项目中要加入此包。还需要log4j的包,这里版本用的是log4j-1.2.17.jar,slf4j-log4j12-1.6.1.jar,slf4j-api-1.6.4.jar当然还有一些依赖包,项目中都有,这里不再做说明。

二、安装配置

1)JOBXML配置

<?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/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName" default-lazy-init="true"><bean id="testJob" class="quartz.JobTest"></bean>     <!-- 定义调用对象和调用对象的方法 --><bean id="testTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><!-- 调用的类 --><property name="targetObject"><ref bean="testJob"/></property><!-- 调用类中的方法 --><property name="targetMethod"><value>work</value></property></bean>  <!-- 调度触发器 --><bean id="jibDoTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail"><ref bean="testTask"/></property><!-- cron表达式 --><property name="cronExpression"><value>0 0/1 * * * ?</value></property></bean> <!-- 调度工厂  如果将lazy-init='false'那么容器启动就会执行调度程序 --><bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="jibDoTime"/></list></property><!--必须的设置 QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动 --><property name="startupDelay" value="5" /></bean><!-- 配置任务并发执行线程池 --><bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"><property name="corePoolSize" value="3" /><property name="maxPoolSize" value="5" /><property name="queueCapacity" value="10" /></bean>
</beans>

2)代码实现

package quartz;public class JobTest {public void work(){System.out.println("任务开始执行");}
}

3)web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><display-name>acts_quartz</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-job.xml</param-value></context-param><!-- 监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list>
</web-app>

关于cronExpression表达式: 
字段 允许值 允许的特殊字符 
秒 0-59 , - * / 
分 0-59 , - * / 
小时 0-23 , - * / 
日期 1-31 , - * ? / L W C 
月份 1-12 或者 JAN-DEC , - * / 
星期 1-7 或者 SUN-SAT , - * ? / L C # 
年(可选) 留空, 1970-2099 , - * / 
表达式意义 
"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触发 
每天早上6点 
0 6 * * * 
每两个小时 
0 */2 * * * 
晚上11点到早上8点之间每两个小时,早上八点 
0 23-7/2,8 * * * 
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 11 4 * 1-3 
1月1日早上4点 
0 4 1 1 * 

科帮网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业相机基本参数以及选型

from: https://blog.csdn.net/dcrmg/article/details/52851913工业相机基础知识&#xff08;一&#xff09; CCD与CMOS 工业相机按照图像的传感器元件的不同分为CCD&#xff08;Charge Coupled Device,电荷耦合元件&#xff09;和CMOS&#xff08;金属氧化物半导体元件&#xf…

读《我是一只IT小小鸟》有感

学期刚开始老师就在课堂上给我们这些未来的IT行业工作者推荐了这本《我是一只IT小小鸟》。其实在这之前我对这本书是早有耳闻的&#xff0c;许多人的推荐足以证明它是一本好书&#xff0c;然而那时的我并未能料到自己会成为软件工程专业的学生&#xff0c;也对这个专业一无所知…

socket编程初级

什么是socket定义socket通常也称作套接字&#xff0c;用于描述IP地址和端口&#xff0c;是一个通信链的句柄&#xff0c;应用程序通常通过套接字向网络发出请求或者应答网络请求。socket起源于Unix&#xff0c;而Unix/Linux基本哲学之一就是“一切皆文件”&#xff0c;对于文件…

OpenCV—基本数据结构与示例

OpenCV的基本数据结构及示例OpenCV中强大的Mat类型大家已经比较熟悉了。这里梳理一些在工程中其他经常用到的几种基本数据类型。包括&#xff1a;VecScalarPointSizeRectRotatedRect1. Vec类1.1 基本概念Vec是一个模板类&#xff0c;主要用于存储数值向量。1.2 用法&#xff08…

使用var声明的变量 和 直接赋值并未声明的变量的区别

在看JS高级程序设计时忽然想到这个问题&#xff0c;众所周知&#xff0c;直接赋值一个变量而为声明&#xff0c;会产生一个全局变量&#xff08;或者说是全局对象的属性&#xff09;&#xff0c;但用var声明的变量 和 直接赋值而并未声明的变量 都有哪些区别呢&#xff0c;这是…

转载-程序员编程技术迅速提高的终极攻略

2019独角兽企业重金招聘Python工程师标准>>> 前言 你是否觉得自己从学校毕业的时候只做过小玩具一样的程序&#xff1f;走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍&#xff08;朋友的抱怨&#xff1a;学校课程总是从理论出发&#xff0c;作业项目都…

工作记录二-Docker+Dockerfile

1. 安装虚拟机 Oracle VM VirtualBox&#xff0c; 安装centos 7.2版本2. 需要在命令行中先设置代理&#xff1a; export http_proxyproxy.xxxxx.com:8080 3. 运行 yum install docker安装docker 安装 docker-compose curl -L https://github.com/docker/compose/releases/down…

SVM

from&#xff1a;https://blog.csdn.net/liugan528/article/details/79448379 SVM 1. 基本概念 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学…

listView当中有嵌套了有onClickListener的控件时ListView自身的onItemClick无响应的解决方案...

参考:http://www.cnblogs.com/bluestorm/archive/2013/03/24/2979557.html 解决方案 在ListView要显示的Item的外层加上 android:descendantFocusability"blocksDescendants"转载于:https://www.cnblogs.com/jinglecode/p/5683724.html

LoadRunner常用术语

1.场景 2.负载发生器 3.虚拟用户 4.虚拟用户脚本 5.事务 6.思考时间 7.集合点 8.事务响应时间 转载于:https://www.cnblogs.com/Andy-Lv/p/5263707.html

跟我学Shiro目录贴

2019独角兽企业重金招聘Python工程师标准>>> http://jinnianshilongnian.iteye.com/blog/2018398 转载于:https://my.oschina.net/zhanggongming/blog/714844

【WinForm-无边框窗体】实现Panel移动窗体,没有边框的窗体

没有边框的窗体怎么移动&#xff1f;其实方法有很多&#xff0c;下面介绍一种用控件来移动窗体&#xff0c;Panel或PictureBox都可。主要设置控件的MouseDowm和MouseLeave事件。 第一步&#xff1a;窗体设计 窗体最上面是一个panel1 窗体最下面是一个Panel3&#xff0c;只显示最…

\Grokking Algorithms\简介与作者采访

\关键点\这本书目的是告诉读者解决问题的新方法。 \这本书试图通过插图来让大家更容易掌握主题&#xff0c;避免部分读者觉得太费解。 \这本书不仅适合没有接触过算法的人&#xff0c;也适合刚从计算机专业毕业的学生。 \这本书提供了非常多的例子和简单练习。 \这并不是一本参…

ZedGraph使用经验

开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph&#xff0c;今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/project/showfiles.php?group_id114675ZedGraph相关例子资源&#xff1a;http://zedgraph.org/wiki/index.…

[转载]聊一聊人员培养

转载自“搜狗测试”微信。 人员培养的痛点 大家在组内人员培养是否遇到了如下问题&#xff1a; 组员成长缓慢&#xff0c;无法达到预期 有时候感觉组员没啥进步&#xff0c;有时候感觉组员挺好的&#xff0c;无法统一评价 脑子里都是组员的问题&#xff0c;无法集中精力做其他…

QCon2016旧金山大会焦点分享者确认

QCon旧金山大会是由InfoQ举办的连续十年的最大的英语会议&#xff0c;它将在今年11月7-9日在旧金山湾区举行。\\在QCon大会涵盖了一系列深入的技术&#xff0c;架构师、资深开发者所关注的国际事件&#xff0c;聚焦创新领域和软件发展趋势&#xff0c;QCon大会每年在美国、中国…

怎样安装两个tomcat,怎样配置

装两个tomcat 各自是6.0和7.0 可想执行tomcat6.0 可是实际上却执行tomcat7.0 两个版本号都是用解压缩包 事实上就是不能执行tomcat6.0 仅仅能执行7.0 两个环境变量都配置了。port也改了 还是不行 我遇到这样的情况了&#xff0c;不知大家遇到没有&#xff0c;例如以下是我的…

机器学习实战之SVM

一引言&#xff1a;支持向量机这部分确实很多&#xff0c;想要真正的去理解它&#xff0c;不仅仅知道理论&#xff0c;还要进行相关的代码编写和测试&#xff0c;二者想和结合&#xff0c;才能更好的帮助我们理解SVM这一非常优秀的分类算法支持向量机是一种二类分类算法&#x…

模拟分页效果

css部分&#xff1a; <style type"text/css">.main{width:800px;zoom:1;margin:0 auto;}.item{width:800px;overflow:hidden;}ul{padding:0;width:860px;zoom:1;}.clear{zoom:1;}.clear:after{content:"";display:block;height:0;clear:both;visibil…

XML基本概念及增删改查操作

一、概念及特征&#xff1a; 1. XML 指可扩展标记语言(Extensible Markup Language)&#xff0c;用户可以自己定义标签。XML 被设计用来传输和存储数据&#xff0c;而 HTML 用于格式化并显示数据&#xff0c;并且HTML不能自定义标签。 2. XML 文档形成一种树结构&#xff0c; X…