一個quartz非常簡單的demo,教你最快使用quartz
阿新 • • 發佈:2018-11-09
demo簡介:
這是個簡單quartz例項,主要quart配置整合spring,功能為每20秒輸出一句內容!
執行效果如下:
[31:20] - Starting Quartz Scheduler now, after delay of 20 seconds [31:20] - Scheduler demoTimer_$_NON_CLUSTERED started. [31:21] - dddd 日誌輸出 定時任務測試 [32:00] - dddd 日誌輸出 定時任務測試 [33:00] - dddd 日誌輸出 定時任務測試 [34:00] - dddd 日誌輸出 定時任務測試 [35:00] - dddd
demo例項類:testJob.class 用來做定時任務測試的測試類
package com.ake.dccs.ecs.job; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class testJob { private static final Logger LOGGER= LoggerFactory.getLogger(testJob.class); public void doTask(){ LOGGER.info("dddd"); System.out.println("日誌輸出"); System.out.println("定時任務測試"); } }
整合Spring配置:
<!-- 定時服務 --> <!--註冊定時器--> <bean id="demoTimer" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!--必須配置quartz延遲啟動,在應用啟動後起動,延遲20秒--> <property name="startupDelay" value="20"/> <!--普通觸發器,觸發器列表--> <property name="triggers"> <list> <ref bean="taskDemoTrigger"/> </list> </property> </bean> <!--CronTrigger配置--> <bean id="taskDemoTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!--定時任務詳細方法類--> <property name="jobDetail" ref="taskDemoJobDetail"/> <!--cron表示式--> <property name="cronExpression"> <value>0/60 * * ? * *</value> <!-- 間隔時間60s --> </property> </bean> <!--制定定時任務細節 呼叫哪個類 哪個方法--> <bean id="taskDemoJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="taskDemo"/> </property> <property name="targetMethod"> <value>doTask</value> </property> <property name="concurrent" value="false"/> </bean> <!--定時任務的類--> <bean id="taskDemo" class="com.ake.dccs.ecs.job.testJob"/> <!--掃描專案包--> <context:component-scan base-package="com.ake.dccs.ecs.job"/> </beans>
pom.xml寫入依賴
<!-- quartz 定時服務 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
注意事項:
1.
如果配置檔案applicationContext-scheduler.xml和applicationContext.xml不耦合,必須將其配置到applicationContext.xml裡,才能進行掃描。
例子:
<!-- 匯入分割的spring配置檔案 -->
<import resource="applicationContext-beans.xml"/>
<import resource="applicationContext-datasource.xml"/>
<import resource="applicationContext-cache.xml"/>
<import resource="applicationContext-scheduler.xml"/>
2.
對應的applicationContext.xml必須在/WEB-INF/web.xml裡配置
<!-- Spring上下文配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>