spring的定時調度 – JAVA編程語言程序開發技術文章

項目中要用到一個報表的運算服務器,項目一運行,就會啟動相關的運算方法。

想瞭一圈,java web項目,spring是個萬金油,什麼都叫由它來管理。一查,還真有這個定時調度的功能。

spring提供兩種觸發器,一個是CronTriggerBean,一個是SimpleTriggerBean。

好懶,長話短說吧。

環境: spring + ibatis,首先配置spring配置文件。寫service層(具體的運算方法就寫在這)。

 

1. CronTriggerBean

[html]
<!– 定義job –> 
<bean name="mathsJob1" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <!– 註入的service層 –> 
    <property name="targetObject" ref="mathsService" /> 
    <!– 調用的方法–> www.aiwalls.com
    <property name="targetMethod" value="aotoMathsMethod1" /> 
    <!–concurrent為true,則允許一個QuartzJob並發執行,否則就是順序執行 –> 
    <property name="concurrent" value="false" /> 
</bean> 
 
<!– 定義CronTriggerBean觸發器 –> 
<bean id="mathsTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <!– 註入需要出發的job –> 
    <property name="jobDetail"> 
        <ref bean="mathsJob1" /> 
    </property> 
    <!– 觸發的規則,這裡是 每天的凌晨1點觸發 –> 
    <property name="cronExpression"> 
        <value>0 0 1 * * ?</value> 
    </property> 
</bean> 

 <!– 定義job –>
 <bean name="mathsJob1"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <!– 註入的service層 –>
  <property name="targetObject" ref="mathsService" />
  <!– 調用的方法–>
  <property name="targetMethod" value="aotoMathsMethod1" />
  <!–concurrent為true,則允許一個QuartzJob並發執行,否則就是順序執行 –>
  <property name="concurrent" value="false" />
 </bean>
 
 <!– 定義CronTriggerBean觸發器 –>
 <bean id="mathsTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <!– 註入需要出發的job –>
  <property name="jobDetail">
   <ref bean="mathsJob1" />
  </property>
  <!– 觸發的規則,這裡是 每天的凌晨1點觸發 –>
  <property name="cronExpression">
   <value>0 0 1 * * ?</value>
  </property>
 </bean>
 

 

 

2.SimpleTriggerBean

[html]
<!– 定義job –> 
    <bean name="mathsJob2" 
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
        <!– 註入的service層 –> 
        <property name="targetObject" ref="mathsService" /> 
        <!– 調用的方法–> 
        <property name="targetMethod" value="aotoMathsMethod2" /> 
        <!–concurrent為true,則允許一個QuartzJob並發執行,否則就是順序執行 –> 
        <property name="concurrent" value="false" /> 
    </bean> 
     
    <!– 定義SimpleTriggerBean觸發器 –>    
    <bean id="mathsTriggerBean" class="org.springframework.scheduling.quartz.SimpleTriggerBean">       
        <!– 註入需要出發的job –>        
        <property name="jobDetail">                
            <ref bean="mathsJob2" />           
        </property>            
        <!– 30s後啟動 –>            
        <property name="startDelay" value="30000" />               
        <!– 10s檢查一次 –>               
        <property name="repeatInterval" value="2*60*60*1000" />    
    </bean> 

<!– 定義job –>
 <bean name="mathsJob2"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <!– 註入的service層 –>
  <property name="targetObject" ref="mathsService" />
  <!– 調用的方法–>
  <property name="targetMethod" value="aotoMathsMethod2" />
  <!–concurrent為true,則允許一個QuartzJob並發執行,否則就是順序執行 –>
  <property name="concurrent" value="false" />
 </bean>
 
 <!– 定義SimpleTriggerBean觸發器 –>  
 <bean id="mathsTriggerBean" class="org.springframework.scheduling.quartz.SimpleTriggerBean">    
  <!– 註入需要出發的job –>    
  <property name="jobDetail">      
   <ref bean="mathsJob2" />    
  </property>      
  <!– 30s後啟動 –>        
  <property name="startDelay" value="30000" />        
  <!– 10s檢查一次 –>        
  <property name="repeatInterval" value="2*60*60*1000" />   
 </bean>
 

 

發佈留言