海水正藍

          面朝大海,春暖花開
          posts - 145, comments - 29, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          【轉】Spring+Quartz實現定時任務的配置方法

          Posted on 2012-12-04 12:25 小胡子 閱讀(368) 評論(0)  編輯  收藏 所屬分類: Quartz

          1、Scheduler的配置

          <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
          <property name="triggers">
          <list>
          <ref bean="testTrigger"/>
          </list>
          </property>
          <property name="autoStartup" value="true"/>
          </bean> 
              說明:Scheduler包含一個Trigger列表,每個Trigger表示一個作業。

          2、Trigger的配置

          <bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
          <property name="jobDetail" ref="testJobDetail"/>
          <property name="cronExpression" value="*/1 * * * * ?"/>
          <!-- 每隔1秒鐘觸發一次 -->
          </bean> 
              說明:

                   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 * * ?

          3、JobDetail的配置

          <bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
          <property name="targetObject" ref="testJob"/>
          <property name="targetMethod" value="execute"/>
          <property name="concurrent" value="false"/>
          <!-- 是否允許任務并發執行。當值為false時,表示必須等到前一個線程處理完畢后才再啟一個新的線程 -->
          </bean> 
          4、業務類的配置

          <bean id="testJob" class="com.cjm.web.service.quartz.TestJob"/>  

          5、業務類源代碼

          public class TestJob { 
           
          public void execute(){ 
             
          try{                 
                 
          //.          
                }catch(Exception ex){
                 ex.printStackTrace();
                 }
               }
             } 
              說明:業務類不需要繼承任何父類,也不需要實現任何接口,只是一個普通的java類。

          注意:

               在Spring配置和Quartz集成內容時,有兩點需要注意

                     1、在<Beans>中不能夠設置default-lazy-init="true",否則定時任務不觸發,如果不明確指明default-lazy-init的值,默認是false。

                     2、在<Beans>中不能夠設置default-autowire="byName"的屬性,否則后臺會報 org.springframework.beans.factory.BeanCreationException錯誤,這樣就不能通過Bean名稱自 動注入,必須通過明確引用注入


          原文出自:

          http://www.oschina.net/question/8676_9032

          主站蜘蛛池模板: 屏东县| 抚顺市| 鄱阳县| 重庆市| 望谟县| 凌源市| 新源县| 房产| 忻城县| 静海县| 永州市| 岑巩县| 无极县| 涟水县| 新余市| 郑州市| 广德县| 纳雍县| 璧山县| 荣昌县| 岳阳市| 乌拉特前旗| 虞城县| 汪清县| 台中县| 玛沁县| 云阳县| 凌海市| 六枝特区| 繁昌县| 高雄县| 鄄城县| 特克斯县| 莱阳市| 扶风县| 娱乐| 岱山县| 渝中区| 永新县| 潜江市| 康马县|