一、Quartz的特點
站在用戶的角度思考問題,與客戶深入溝通,找到名山網(wǎng)站設(shè)計與名山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋名山地區(qū)。
* 按作業(yè)類的繼承方式來分,主要有以下兩種:
1.作業(yè)類繼承org.springframework.scheduling.quartz.QuartzJobBean類的方式
2.作業(yè)類不繼承org.springframework.scheduling.quartz.QuartzJobBean類的方式
注:個人比較推崇第二種,因為這種方式下的作業(yè)類仍然是POJO。
* 按任務(wù)調(diào)度的觸發(fā)時機來分,主要有以下兩種:
1.每隔指定時間則觸發(fā)一次,對應(yīng)的調(diào)度器為org.springframework.scheduling.quartz.SimpleTriggerBean
2.每到指定時間則觸發(fā)一次,對應(yīng)的調(diào)度器為org.springframework.scheduling.quartz.CronTriggerBean
注:這兩種觸發(fā)方式均可以跟兩種作業(yè)繼承方式相互組合來使用。
下面簡單演示一下在spring對Quartz的用法。
二、作業(yè)類繼承org.springframework.scheduling.quartz.QuartzJobBean類,每到指定時間則觸發(fā)一次
1.編寫作業(yè)類
package bean.jobDetailBean; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class Job1 extends QuartzJobBean { private int timeout; private static int i = 0; //調(diào)度工廠實例化后,經(jīng)過timeout時間開始執(zhí)行調(diào)度 public void setTimeout(int timeout) { this.timeout = timeout; } /** * 要調(diào)度的具體任務(wù) */ @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println("繼承QuartzJobBean的方式-調(diào)度" + ++i + "進行中..."); } }
2.配置作業(yè)類
<!-- 作業(yè)使用繼承QuartzJobBean的方式 --> <bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="bean.jobDetailBean.Job1" /> <property name="jobDataAsMap"> <map> <entry key="timeout" value="0" /> </map> </property> </bean>
3.配置作業(yè)調(diào)度的觸發(fā)方式
<!-- 對應(yīng)于作業(yè)繼QuartzJobBean類的方式 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="job1" /> <!-- "cronExpression"的配置說明 字段 允許值 允許的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小時 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年(可選) 留空, 1970-2099 , - * / - 區(qū)間 * 通配符 ? 你不想設(shè)置那個字段 --> <!-- 每分鐘的第0,10,20,30,40,50秒調(diào)度一次 --> <property name="cronExpression" value="0,10,20,30,40,50 * * * * ?" /> </bean>
4.配置調(diào)度工廠
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean>
5.開啟調(diào)度
package test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ScheduleTest { public static void main(String[] args){ <span > </span>BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext*.xml"); } }
三、作業(yè)類不繼承org.springframework.scheduling.quartz.QuartzJobBean類,每隔指定時間則觸發(fā)一次
1.編寫作業(yè)類
package bean.jobDetailBean; public class Job2 { private static int i = 0; public void doJob2() { System.out.println("不繼承QuartzJobBean方式-調(diào)度" + ++i + "進行中..."); } }
2.配置作業(yè)類
<bean id="job2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <bean class="bean.jobDetailBean.Job2" /> </property> <property name="targetMethod" value="doJob2" /> <property name="concurrent" value="false" /><!-- 作業(yè)不并發(fā)調(diào)度 --> </bean>
3.配置作業(yè)調(diào)度的觸發(fā)方式
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="job2" /> <property name="startDelay" value="0" /><!-- 調(diào)度工廠實例化后,經(jīng)過0秒開始執(zhí)行調(diào)度 --> <property name="repeatInterval" value="2000" /><!-- 每2秒調(diào)度一次 --> </bean>
4.配置調(diào)度工廠
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger" /> </list> </property> </bean>
5.開啟調(diào)度
package test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ScheduleTest { public static void main(String[] args){ BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext*.xml"); } }
簡單說明spring自帶調(diào)度器的例子。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
網(wǎng)頁標題:JavaSpring中Quartz調(diào)度器詳解及實例
當前地址:http://aaarwkj.com/article30/pdphso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站營銷、品牌網(wǎng)站建設(shè)、網(wǎng)站改版、、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)