項目中要用到一個報表的運算服務器,項目一運行,就會啟動相關的運算方法。
想瞭一圈,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>