瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          spring任務調度

          Posted on 2010-01-27 14:47 瘋狂 閱讀(3221) 評論(1)  編輯  收藏 所屬分類: spring
          簡單的使用java Timer調度任務
          首先寫一個定時器任務類
          1. package com.myspring.quartz;   
          2.   
          3. import java.util.TimerTask;   
          4.   
          5. public class MyTimeTask extends TimerTask {   
          6.   
          7.     @Override  
          8.     public void run() {   
          9.         // TODO Auto-generated method stub   
          10.         System.out.println("hello");   
          11.     }   
          12.   
          13. }  

          spring配置文件
          <?xml version="1.0" encoding="UTF-8"?>  
          1. <beans xmlns="http://www.springframework.org/schema/beans"  
          2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
          3.     xmlns:p="http://www.springframework.org/schema/p"  
          4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
          5.     <bean id="timeTask" class="com.myspring.quartz.MyTimeTask"></bean>  
          6.     <bean id="myTimeTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">  
          7.         <property name="timerTask" ref="timeTask"></property>  
          8.         <!-- 指定任務運行周期,單位毫秒 -->  
          9.         <property name="period" value="1000"></property>  
          10.         <!-- 指定任務延時時間,即第一次運行之前等待時間,單位毫秒 -->  
          11.         <property name="delay" value="1000"></property>  
          12.     </bean>  
          13.     <bean class="org.springframework.scheduling.timer.TimerFactoryBean">  
          14.         <property name="scheduledTimerTasks">  
          15.             <list>  
          16.                 <ref bean="myTimeTask"/>  
          17.             </list>      
          18.         </property>  
          19.     </bean>  
          20. </beans>  

          局限性:Java Timer無法精確指定何時運行
          使用Quartz調度器
          同Java Timer一樣首先創建一個任務類MyQuartzJob.java
          package com.myspring.quartz;   
          1.   
          2. import org.quartz.JobExecutionContext;   
          3. import org.quartz.JobExecutionException;   
          4. import org.springframework.scheduling.quartz.*;   
          5. public class MyQuartzJob extends QuartzJobBean{   
          6.   
          7.     @Override  
          8.     protected void executeInternal(JobExecutionContext arg0)   
          9.             throws JobExecutionException {   
          10.         // TODO Auto-generated method stub   
          11.         System.out.println("方法調用");   
          12.     }   
          13.   
          14. }  

          添加spring配置
          <bean id="quartzJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
          1.         <property name="jobClass" value="com.myspring.quartz.MyQuartzJob"></property>  
          2.         <!-- 接受一個Map,其中包含了需要設置給jobClass的各種屬性 -->  
          3.         <property name="jobDataAsMap">  
          4.             <map></map>  
          5.         </property>  
          6.     </bean>  
          7.        
          8.     <bean id="simplerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
          9.         <property name="jobDetail" ref="quartzJob"></property>  
          10.         <!-- 設置延遲工作的第一次執行,單位毫秒 -->  
          11.         <property name="startDelay" value="1000"></property>  
          12.         <!-- 設置調度任務頻度,單位毫秒 -->  
          13.         <property name="repeatInterval" value="1000"></property>  
          14.     </bean>  

          為了精確的控制調度工作,Quartz提供了cron工作
          調度一個cron工作
          例如,要在每天晚上11:59運行任務
          可以如下配置spring配置
          <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
          1.         <property name="jobDetail" ref="quartzJob"></property>  
          2.         <property name="cronExpression" value="0 59 23 * * ?"></property></bean>  

          我的主管寫的cronExpression配置說明
          最后啟動工作,添加spring配置
          <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
          1.         <!-- 接受一組觸發器,可以接受一個列表 -->  
          2.         <property name="triggers">  
          3.             <list>  
          4.                 <ref bean="simplerTrigger"/>  
          5.                 <ref bean="cronTrigger"/>  
          6.             </list>  
          7.         </property>  
          8.     </bean>  

          使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean類,直接調度任務,而不用繼承QuartzJobBean
          首先編寫一個簡單任務類MyQuartz.java
           
          1. package com.myspring.quartz;   
          2.   
          3. public class MyQuartz {   
          4.     public void hello(){   
          5.         System.out.println("hello");   
          6.     }   
          7. }  

          然后添加spring配置
           
          1. <bean id="myQuartz" class="com.myspring.quartz.MyQuartz"></bean>  
          2.     <bean id="newJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
          3.         <property name="targetObject" ref="myQuartz"></property>  
          4.         <property name="targetMethod" value="hello"></property>  
          5.     </bean>  

          最后同理添加spring配置
           
          1. <bean id="simplerTrigger2" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
          2.         <property name="jobDetail" ref="newJob"></property>  
          3.         <property name="startDelay" value="1000"></property>  
          4.         <property name="repeatInterval" value="1000"></property>  
          5.     </bean>  
          6. <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
          7.         <!-- 接受一組觸發器,可以接受一個列表 -->  
          8.         <property name="triggers">  
          9.             <list>  
          10.                 <ref bean="simplerTrigger2"/>  
          11.             </list>  
          12.         </property>  
          13.     </bean?  

          評論

          # re: spring任務調度  回復  更多評論   

          2014-05-09 15:22 by
          好的
          主站蜘蛛池模板: 乌鲁木齐县| 威宁| 元阳县| 大石桥市| 灵山县| 靖宇县| 安化县| 林口县| 长沙市| 剑河县| 日土县| 响水县| 金寨县| 二手房| 手机| 鹰潭市| 厦门市| 醴陵市| 镇远县| 怀集县| 翁源县| 诏安县| 宁晋县| 普安县| 大丰市| 观塘区| 三门峡市| 密山市| 榕江县| 西乌珠穆沁旗| 阿克陶县| 临高县| 霍城县| 邵阳市| 乐山市| 嘉义县| 开鲁县| 修水县| 宁国市| 凤山县| 西华县|