科帮网-Java论坛、Java社区、JavaWeb毕业设计

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

动态微博

查看: 9477|回复: 0

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

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

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

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-07-15 14:34:55 |显示全部楼层 |倒序浏览
           项目中一直使用Quartz做定时任务,但是一直没有去仔细阅读详细参数配置说明以及它源码,最近花了一点时间做了一个整理。系统的看了一下源码实现并顺手做了一个简单的Demo。
    $ D( N( J: V" _& S
    5 X7 ?, \+ b0 ?, m2 _% w9 X& t一、说明3 r* V4 k. i: X  ~
    9 r9 I7 }+ p2 n- H+ f6 ^5 c( h
    spring版本4.0.5、Quartz版本2.2.2
    5 U( R- o' n) Y# P$ Z/ [% H注意定时任务的配置需要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当然还有一些依赖包,项目中都有,这里不再做说明。

    * f: g! h2 O6 K1 O4 B& X
    6 \$ _% M9 g" |$ K( u1 v0 s) z, Z二、安装配置
      O, {) n: a: y% ~6 b9 }8 t
    / l, x( ~4 g: o+ e4 K6 E+ [1)JOBXML配置# B& |: l$ N7 W
    1. <?xml version="1.0" encoding="UTF-8"?>
      % u8 h: `# c" Y  X, c1 n% v
    2. <beans xmlns="http://www.springframework.org/schema/beans"
      % ~4 L8 X. p8 U' @# n9 ~
    3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
      1 y4 q9 O: y) H. |8 ^% i* L8 y2 u0 G
    4.         xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
      8 A" t$ G( K2 ?' z+ {5 F4 T
    5.         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        s$ C! I) k: d" b% [
    6.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
      0 t4 c% m# f, w- E6 u
    7.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
      ' f3 f" P! l  A4 r) Y
    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">
      2 P/ E/ Y; T* O8 ]! x
    9.             - R* K: S$ @4 K( O8 W- W- X
    10.              <bean id="testJob" class="quartz.JobTest"></bean>     
      / L" D* J2 d6 b. K. }7 k( w
    11.         <!-- 定义调用对象和调用对象的方法 -->5 k2 g$ @1 X1 B
    12.         <bean id="testTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
      9 N3 v) ?8 v* Y8 o0 b
    13.             <!-- 调用的类 -->
      & i* O# V8 h# q
    14.             <property name="targetObject">4 a) ~8 E0 D$ y0 j  ^( V1 K
    15.                 <ref bean="testJob"/>
      + S1 I) |6 K! i' ]1 w- Y
    16.             </property>
      9 ~8 |5 w$ Q* w' i+ U0 X: I/ F, K
    17.             <!-- 调用类中的方法 -->/ C5 i8 q4 J, @6 H+ ?2 H
    18.             <property name="targetMethod">' z+ [/ Q+ V4 j- Y& d0 }
    19.                 <value>work</value>" _$ r) s( ]1 p+ s6 `3 @7 m
    20.             </property>
      4 ^: x. ~8 o1 _3 |
    21.         </bean>  0 d* k; j- ?8 m* \' M
    22.         <!-- 调度触发器 -->
      2 h1 G% B( S4 m( Z
    23.         <bean id="jibDoTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
      4 P; G- Z& n# ?5 a2 A
    24.             <property name="jobDetail">+ y8 U) R' R2 q; z1 I) ?3 S
    25.                 <ref bean="testTask"/>
      3 X0 H. }5 l1 h' E7 d/ g7 q) K
    26.             </property>
      5 ?, u9 R5 K( I( ~% V8 F1 a; ~
    27.             <!-- cron表达式 -->+ j- e' w+ j2 P
    28.             <property name="cronExpression">
      / P1 z) E! }- d9 k' h+ f0 x
    29.                                         <value>0 0/1 * * * ?</value>- i( K) `' ]# r: S4 m( `  V
    30.             </property>( q; D, x! V% j- u" y1 y0 l" W( b
    31.         </bean>
      ! x# L) t$ ^1 b* Z
    32.         <!-- 调度工厂  如果将lazy-init='false'那么容器启动就会执行调度程序 -->) A9 {! Q) Q- r
    33.         <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      ; |% P5 Z" N! J( C6 P8 v5 f  U1 t
    34.             <property name="triggers">! _/ Q* E; Q( H% U; j; t% T
    35.                 <list>
      8 @4 e* U+ U" Y' N! f* ~: u
    36.                     <ref bean="jibDoTime"/>- R& }6 N( k6 n
    37.                 </list>6 `) a8 g, t# J: t8 K) P
    38.             </property>, a5 ^& E, v5 s% d0 V4 r
    39.             <!--必须的设置 QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动 -->- B0 \7 Z; a' m' B
    40.             <property name="startupDelay" value="5" />
      ! _3 A6 s* b" \4 _
    41.       </bean>
      0 a& ^, S, D' J! ^
    42.       <!-- 配置任务并发执行线程池 -->
      " g9 T/ ^  j: s* j  f+ V( R& |
    43.           <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
      9 H* G, [2 L( |% Y4 H8 X6 l
    44.                 <property name="corePoolSize" value="3" />8 c' z% p3 \. m
    45.                 <property name="maxPoolSize" value="5" /># L$ z7 B( |& l% J2 ?1 J
    46.                 <property name="queueCapacity" value="10" />
      1 Y" Z3 ^& t/ k( T5 ~* Z
    47.           </bean>
      % k/ E( |1 v4 A) @: A" z" J
    48. </beans>
    复制代码

    6 O% V* q( T- x% w

    : e) G" Z# _/ w2 G  b+ k/ s, U2)代码实现4 s0 z, k9 Z- W/ g) _( Y) D
    1. package quartz;
      ) S! o3 i) b" P9 x8 I6 O

    2. 0 ^( U1 H/ q: d5 y8 P/ m" ^* [4 R. _
    3. public class JobTest {1 ~5 B: z6 c  m+ ?1 Z6 B* }0 P
    4.         public void work(){
      6 ]" A8 l7 ~- L4 ~
    5.                 System.out.println("任务开始执行");% ~6 r% [! J+ D# Q. @9 J- `& B
    6.         }
      3 P& Z0 |; g- V) K
    7. }0 t, b) \5 v6 `4 h  n3 f. z% T
    复制代码

    ) K: ^5 W/ Y- j% S( u3)web.xml配置

    " L3 O4 Y& P$ ?2 o" c
    1. <?xml version="1.0" encoding="UTF-8"?>* Q9 _! C" t6 e: D9 |  c
    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">3 P* z9 L3 f, C. Z& R# W$ J* B0 R8 V
    3.         <display-name>acts_quartz</display-name>( X* d* d) s( v/ s" w2 g* y
    4.         <context-param>  B% T- @( d' S# S6 Y# S% M; J1 J2 F
    5.             <param-name>contextConfigLocation</param-name>
      4 H  O5 K+ R& L0 ^0 O
    6.             <param-value>classpath:applicationContext-job.xml</param-value>
      - L' J/ P5 A% b4 ^2 D
    7.     </context-param>1 z) W& H7 U9 P; Z# q, N8 |
    8.      <!-- 监听器 -->
      ( l2 {/ d7 r  V% a0 @
    9.          <listener>
      : {5 @8 p! q! A3 j! D6 Z, i8 Z
    10.                 <listener-class>
      $ b! _/ J; |% `1 P) A" g+ e; H
    11.                                 org.springframework.web.context.ContextLoaderListener
      : O4 V( d2 {& e- a/ K
    12.                         </listener-class>2 L1 e* k4 r' T+ L
    13.          </listener>% D/ P* j$ ^+ O& d
    14.         <welcome-file-list>0 f' a! \# l2 U! l$ }
    15.                 <welcome-file>index.html</welcome-file>
      ; z# u' _6 ^2 }/ |
    16.         </welcome-file-list>
        o- W' c5 I$ W# Y& i  l$ w
    17. </web-app>
      : D. M, l3 @$ z) p. J  m
    复制代码
    : ?& p" _- N! M+ t8 I
    关于cronExpression表达式:
    - y& F, U0 C/ I& b字段 允许值 允许的特殊字符
    " f. \9 T7 |. @) M( q秒 0-59 , - * /
    ' R! s6 l$ a/ H分 0-59 , - * / % \, }3 f: O' ]8 }+ {4 E
    小时 0-23 , - * /
    3 X3 R: |( {  U8 z/ y: c" k日期 1-31 , - * ? / L W C ( P- M  v$ ]; d+ m1 P2 M5 F
    月份 1-12 或者 JAN-DEC , - * / 8 l; ]* G9 p! U( r. b1 R# }/ s
    星期 1-7 或者 SUN-SAT , - * ? / L C #
      L6 U' B8 j2 ^$ @' l9 `年(可选) 留空, 1970-2099 , - * / 6 f2 ^4 E1 d5 Y) Z% M2 ~
    表达式意义
    ' [  G+ A( o2 n6 q/ {"0 0 12 * * ?" 每天中午12点触发 6 z$ q: j, O' T$ D
    "0 15 10 ? * *" 每天上午10:15触发
      q; s9 l$ H" y: @. a6 s6 H7 L"0 15 10 * * ?" 每天上午10:15触发 $ n3 t4 s* o: a
    "0 15 10 * * ? *" 每天上午10:15触发 ) i* s1 h! j9 g! d3 K& R  c
    "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 % a, p2 c( ^/ C3 @. A
    "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 9 x0 k+ h7 x- t' E6 _
    "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
    ( q& w: F# K5 Q0 h5 r" v"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 2 m) g4 J% K$ n. W5 D0 u. g
    "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
    ( g5 C( n  E2 U$ ^! u"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 : o7 w( a3 D* Q8 L) B) o( F* L6 P
    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 4 k" Y) X" }6 d
    "0 15 10 15 * ?" 每月15日上午10:15触发
    ; \; h0 N6 M% @$ F"0 15 10 L * ?" 每月最后一日的上午10:15触发 , h8 ^( ]* h7 W* s. f7 }
    "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
    1 r( N1 U, G+ U' p; o% R8 w"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 + R( Z! S/ `3 Y) z6 }2 |: W
    "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
    : T- T$ _. k7 v6 }+ _9 U每天早上6点
    7 p) W7 Y( C2 z& I# S0 ^  ^0 6 * * * # t0 d6 W  _( A% h" ]
    每两个小时 6 u+ h3 Z0 [1 J. h+ t2 B: B: ]
    0 */2 * * * + t6 r1 w  `8 U' d  d2 O
    晚上11点到早上8点之间每两个小时,早上八点
    & b+ g! b& @6 g1 |7 i0 23-7/2,8 * * * : e1 N8 p' T3 ]% u9 A, b7 R
    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
    0 [) X5 ]  y/ ^7 j; I, `0 11 4 * 1-3 ; l- ~. w- x4 I; M! n
    1月1日早上4点
    9 r! y+ x- O% S8 d2 q& h+ m0 4 1 1 *
    / }) W/ {9 K  x2 ?4 q% K7 ^' q7 ~" r9 @- h$ M- ?
    项目源码下载地址:6 G; Z& P  w0 f+ N: z
    游客,如果您要查看本帖隐藏内容请回复

    3 ?8 z- g  p' ?  K& [- F8 h* V% j; R) I, _' s; b$ i) K$ {
    $ J' t) u) e7 ~

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


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

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

       

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