我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > SpringMvc整合Quartz实现定时任务项目源码
总共48086条微博

动态微博

查看: 10001|回复: 38

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

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-07-15 14:34:55 |只看该作者 |倒序浏览
           项目中一直使用Quartz做定时任务,但是一直没有去仔细阅读详细参数配置说明以及它源码,最近花了一点时间做了一个整理。系统的看了一下源码实现并顺手做了一个简单的Demo。: e; H: n! `' n* h) ]% O! B# `

    $ d2 F1 P/ H# C2 U2 b( a1 i2 E8 ^一、说明
    ; E. W! s9 Z: e" `2 B+ R
    ( F+ u# y3 ^/ O2 z  r7 [spring版本4.0.5、Quartz版本2.2.2& z0 k, V3 I9 |7 [9 z" r" Y# R
    注意定时任务的配置需要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当然还有一些依赖包,项目中都有,这里不再做说明。
    ( E$ A: V* e% K1 @8 q
    ; o4 u# ?6 T$ ^) h+ {
    二、安装配置4 C1 i. z6 U5 p4 F% Y
    . d* X2 k% h) M6 Z
    1)JOBXML配置
    3 {$ k9 x. i0 k
    1. <?xml version="1.0" encoding="UTF-8"?>! d0 m1 u4 h, W; K& C9 M2 W& L) ~
    2. <beans xmlns="http://www.springframework.org/schema/beans"5 s, [2 {6 Z0 P. f
    3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"- f, i1 k* D' T3 s3 q
    4.         xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
      * t8 N8 Y. G* ^6 l8 Z
    5.         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd7 i# E8 n* q) i  a# U
    6.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd$ D  b( o* a! d  Q. z4 s9 A' d
    7.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd2 H( _  _, I/ B" F5 f5 s) v
    8.             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName" default-lazy-init="true">$ r2 S" `8 `1 n4 h9 F! |
    9.             
      " o: b8 e3 S# W+ H
    10.              <bean id="testJob" class="quartz.JobTest"></bean>     
      - T( [' s7 @4 Q7 c+ h1 U
    11.         <!-- 定义调用对象和调用对象的方法 -->
      8 q8 f- c7 O1 V6 [' ?$ O8 u0 W, Z( E
    12.         <bean id="testTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
      " \$ [2 u% |+ [0 [  S
    13.             <!-- 调用的类 -->9 W# q8 a9 ^) Z7 J5 `: k; b
    14.             <property name="targetObject">
      % C2 d$ F; J2 u* }# N
    15.                 <ref bean="testJob"/>/ ]' i7 Z8 A+ k5 z) C& X) U% T2 Z7 ]
    16.             </property>
      % v: ~3 E3 O- A9 ]1 s/ r! I; C
    17.             <!-- 调用类中的方法 -->
      3 M* _; ]& E; q& W* @
    18.             <property name="targetMethod">
      " S. r2 x2 W3 ~+ ?) l6 t
    19.                 <value>work</value>
      " Y: N) r4 F+ M( ~% }* l0 |; Y1 s
    20.             </property>
      3 O8 A. g; }% M! }" k
    21.         </bean>  3 Q' M) K9 Y6 L7 y
    22.         <!-- 调度触发器 -->; f$ |$ |6 I2 F& c
    23.         <bean id="jibDoTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
      5 u; U9 P3 J/ `; ]9 X! g5 a
    24.             <property name="jobDetail">7 @, o5 d& p9 J* t, V$ s
    25.                 <ref bean="testTask"/>( }3 g  @4 W" s8 A* y
    26.             </property>" j0 H* U* V* S$ }+ a- [
    27.             <!-- cron表达式 -->
      & u( w4 A9 h, ~, `
    28.             <property name="cronExpression">
      6 n$ [# G/ r+ h9 t
    29.                                         <value>0 0/1 * * * ?</value>
      ! }2 O  j  r3 v2 X- Z1 r0 \7 V& v
    30.             </property>3 K# q, ]5 z/ p* h: @
    31.         </bean> - U% R% e) h4 e
    32.         <!-- 调度工厂  如果将lazy-init='false'那么容器启动就会执行调度程序 -->
      1 J6 a' k4 j, P, W& B* r2 k
    33.         <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      - s1 W+ U/ _9 z' d* j4 r/ D/ u3 D
    34.             <property name="triggers">' t6 J9 m" s; j% A/ T' b
    35.                 <list>
      7 l; p9 ]" U) x
    36.                     <ref bean="jibDoTime"/>
        c. d' V& S  a$ ]3 [& c
    37.                 </list>6 \$ ]1 b* V7 m, Q  o, N. G
    38.             </property>
      ! W9 D0 m5 P. \. p) J
    39.             <!--必须的设置 QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动 -->
      2 k) t0 B( h  |( U
    40.             <property name="startupDelay" value="5" />3 C/ v4 O" ?" E% A, v
    41.       </bean>) ^9 b8 c. n6 G# c: i+ f3 W+ s
    42.       <!-- 配置任务并发执行线程池 -->
      $ E4 z& M9 k+ w# k4 X- z; Y* C
    43.           <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"># i! y5 W# ^, k: a9 }
    44.                 <property name="corePoolSize" value="3" />/ }  u% S! T* }# @! T" J* e5 b
    45.                 <property name="maxPoolSize" value="5" />+ ~# b! z9 k+ I" ?& }& u
    46.                 <property name="queueCapacity" value="10" />* D1 K) d! n! a# U! P0 w+ H
    47.           </bean>
      # V/ i2 X0 g3 t
    48. </beans>
    复制代码

    ' P- {0 w+ y) l% N$ h( }
    ) {% [0 i! G/ ?& c. ]2 f
    2)代码实现; a0 _/ V% z; d0 @# b- m* i
    1. package quartz;
      4 v8 C& m8 v. g( `8 H; r* t7 |9 u
    2. # I: r4 G" y8 ~; I
    3. public class JobTest {
      7 }- U. |7 w$ D+ l; V) y( l: W
    4.         public void work(){
      ( l' J/ O1 i# m2 G/ C- C; N  o0 d
    5.                 System.out.println("任务开始执行");
      - G) q' ~9 g8 y* N
    6.         }
      5 E/ m% `% ]8 O9 g! C6 E! j
    7. }& W- Y2 N3 [7 m( g
    复制代码

    # Q- N' r/ q( A  V3)web.xml配置

    & O1 L7 v* f9 k; u; i. O
    1. <?xml version="1.0" encoding="UTF-8"?>. t! B. r9 j  G- \$ j$ f9 P5 r& T
    2. <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">2 M8 I" ]6 }# {9 V6 c  ?
    3.         <display-name>acts_quartz</display-name>
      " N  t- Z7 g/ I7 o
    4.         <context-param>
      & d- h) _1 K1 I+ C' s
    5.             <param-name>contextConfigLocation</param-name>) @  t  v" V" S5 T
    6.             <param-value>classpath:applicationContext-job.xml</param-value>
      ; I! b, W6 n; F9 r5 y
    7.     </context-param>+ n3 N5 T( c  @7 J) W0 g
    8.      <!-- 监听器 -->& Q9 j, _4 U$ n
    9.          <listener>
        Y- E5 Y+ Q2 M' x7 D' c3 T: D5 A
    10.                 <listener-class>
      + B: T2 f, y3 p8 ]- Q% g
    11.                                 org.springframework.web.context.ContextLoaderListener, y6 y% t4 g" \. u  f4 z
    12.                         </listener-class>; g5 y8 L# @8 t$ C$ D' i( w
    13.          </listener>
      ! I" i6 a3 i  X3 m: t, ?/ ?
    14.         <welcome-file-list>
      5 I6 G; u, Q8 ]# ]) s7 L
    15.                 <welcome-file>index.html</welcome-file>
      6 b. i! ?* B2 A1 ~, Q' |! x
    16.         </welcome-file-list>  }# W' o% p$ |
    17. </web-app>. b% ~8 ^  S5 _& I4 L- k5 i+ B
    复制代码
    3 k9 u! N% Q$ U& T# F+ o7 W
    关于cronExpression表达式: 0 t6 Y  g: C% d& Z. `3 H1 _
    字段 允许值 允许的特殊字符
    6 i  B7 m7 N/ y秒 0-59 , - * / 4 S, U# k9 Q8 u
    分 0-59 , - * /
    & L* T+ s. Y- s小时 0-23 , - * / ; Z9 o9 b! l8 S% f$ C' r
    日期 1-31 , - * ? / L W C
    4 [( g+ l0 N/ O月份 1-12 或者 JAN-DEC , - * /
    8 i( ^8 c7 ~" q2 w% K星期 1-7 或者 SUN-SAT , - * ? / L C #
    2 z2 j7 ^" I+ F& J3 F年(可选) 留空, 1970-2099 , - * /
    3 e$ I- [* e! a; {表达式意义
    & I1 V  P2 W* @( K" Y0 l/ Y  @; y"0 0 12 * * ?" 每天中午12点触发
    ) s* D8 O, W) Z9 g! O( D"0 15 10 ? * *" 每天上午10:15触发
    9 E$ K- {  g# J% Q0 p2 ~; e$ d+ }"0 15 10 * * ?" 每天上午10:15触发 0 o& m+ s' {% ]# V
    "0 15 10 * * ? *" 每天上午10:15触发 4 ]9 y- z* c- V& o* H- |! ?  q
    "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 % o9 o+ A- f. X& V! [
    "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
    # b' d) B* o# N, \"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 ; w( N1 V9 g8 e2 N1 ~
    "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 * `! ~; f( m0 q; U5 A
    "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 ( }; b8 Q' i4 Z% N$ x$ ]* }
    "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发   E  f. ^8 V7 t- ]
    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
    2 b% f2 I' e3 J/ H+ E"0 15 10 15 * ?" 每月15日上午10:15触发 7 N# I* w0 ]7 I# k1 X; y
    "0 15 10 L * ?" 每月最后一日的上午10:15触发 % ]8 P- ?! N' ~. X, N
    "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
    ) \+ W9 ]! s% r; h"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 # m  Q5 a5 r! a# c6 T$ I  f
    "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 , U, H9 R; t# L8 y8 S
    每天早上6点 + f" T) h3 I3 G% ?6 F. ]" @( {
    0 6 * * *
    . o  [) X; {7 c& ~每两个小时 : [) |5 S* `2 @( U, _! `4 K
    0 */2 * * *
    % o3 e8 r* _' O5 O3 V/ ]. z晚上11点到早上8点之间每两个小时,早上八点
    0 B7 }! U6 v. {' H0 23-7/2,8 * * * & y; y  t, J2 k# y3 p/ j
    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 # R# P/ U" B2 D. L
    0 11 4 * 1-3 # m0 q7 t. C8 k; m1 T
    1月1日早上4点 5 @( m) `$ Q0 f) H' ~, |0 m
    0 4 1 1 * 9 s& e6 A, S: r, [
    / r* J" M3 W# i5 R) d! O5 v
    项目源码下载地址:
    4 x: }9 r' v$ Z  r; L: T
    游客,如果您要查看本帖隐藏内容请回复
      p$ w+ J3 c6 B5 \+ X& s& E
    8 g; [3 [. m0 z# B

    & k9 \  Y1 i/ o+ _; N. }1 g' ]7 \

    我的日常 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与我的日常享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和我的日常的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、我的日常管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    1

    主题

    0

    听众

    366

    金钱

    四袋长老

    该用户从未签到

    沙发
    发表于 2016-07-19 08:57:06 |只看该作者
    不错的东西  支持I小爱
    回复

    使用道具 举报

    12

    主题

    1

    听众

    548

    金钱

    四袋长老

    该用户从未签到

    板凳
    发表于 2016-07-19 10:04:54 |只看该作者
    积分不够啊 这么高的积分要到什么时候才有
    回复

    使用道具 举报

    9

    主题

    0

    听众

    189

    金钱

    三袋弟子

    该用户从未签到

    地板
    发表于 2016-07-21 17:34:37 |只看该作者
    不错的东西  支持I小爱
    回复

    使用道具 举报

    1

    主题

    0

    听众

    124

    金钱

    三袋弟子

    该用户从未签到

    5#
    发表于 2016-07-27 16:36:17 |只看该作者
    学习学习~~~~
    回复

    使用道具 举报

    1

    主题

    0

    听众

    70

    金钱

    二袋弟子

    该用户从未签到

    6#
    发表于 2016-07-28 09:19:30 |只看该作者
    新发现   拿来看看,顶下楼主
    回复

    使用道具 举报

    1

    主题

    0

    听众

    64

    金钱

    二袋弟子

    该用户从未签到

    7#
    发表于 2016-07-29 14:29:34 |只看该作者
    不错的东西  支持I小爱
    回复

    使用道具 举报

    15

    主题

    0

    听众

    193

    金钱

    三袋弟子

    该用户从未签到

    8#
    发表于 2016-07-29 15:18:41 |只看该作者
    不错哦!不错哦!不错哦!不错哦!
    回复

    使用道具 举报

    30

    主题

    0

    听众

    394

    金钱

    四袋长老

    该用户从未签到

    9#
    发表于 2016-07-31 02:48:21 |只看该作者
    想看看,学习一下
    回复

    使用道具 举报

    30

    主题

    0

    听众

    426

    金钱

    四袋长老

    该用户从未签到

    10#
    发表于 2016-08-02 14:22:48 |只看该作者
    感谢楼主分享
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表