Spring和Quartz實現的定時任務排程
阿新 • • 發佈:2019-02-11
Corn表示式
一、增加所依賴的JAR包
1. 增加Spring的Maven依賴
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>3.0.5.RELEASE</version>
- </dependency>
2. 增加Quartz的Maven依賴
-
<dependency
- <groupId>org.quartz-scheduler</groupId>
- <artifactId>quartz</artifactId>
- <version>1.8.4</version>
- </dependency>
二、增加定時業務邏輯類
- publicclass ExpireJobTask {
- /** Logger */
-
privatestaticfinal Logger logger = LoggerFactory.getLogger(ExpireJobTask.
- /**
- * 業務邏輯處理
- */
- publicvoid doBiz() {
- // 執行業務邏輯
- // ........
- }
- }
ExpireJobTask業務邏輯類與一般普通的類沒有任務區別,它定義的doBiz方法即為排程業務方法。
三、增加Spring配置
1. 增加一個執行緒池
- <!-- 執行緒執行器配置,用於任務註冊 -->
-
<beanid="executor"class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"
- <propertyname="corePoolSize"value="10"/>
- <propertyname="maxPoolSize"value="100"/>
- <propertyname="queueCapacity"value="500"/>
- </bean>
2. 定義業務邏輯處理類
- <!-- 業務物件 -->
- <beanid="bizObject"class="com.aboy.potak.common.toolkit.scheduling.ExpireJobTask"/>
3. 增加排程業務邏輯
- <!-- 排程業務 -->
- <beanid="jobDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <propertyname="targetObject"ref="bizObject"/>
- <propertyname="targetMethod"value="doBiz"/>
- </bean>
上面的配置中,我們以bizObject.doBiz方法為將要排程的業務執行邏輯。
4. 增加排程觸發器
- <beanid="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean">
- <propertyname="jobDetail"ref="jobDetail"/>
- <propertyname="cronExpression"value="10 0/1 * * * ?"/>
- </bean>
Cron表示式“10 */1 * * * ?”意為:從10秒開始,每1分鐘執行一次。
- <beanid="taskTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerBean">
- <propertyname="jobDetail"ref="jobDetail"/>
- <propertyname="startDelay"value="10000"/>
- <propertyname="repeatInterval"value="60000"/>
- </bean>
5. 增加排程
- <!-- 設定排程 -->
- <beanclass="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <propertyname="triggers">
- <list>
- <refbean="cronTrigger"/>
- </list>
- </property>
- <propertyname="taskExecutor"ref="executor"/>
- </bean>
triggers屬性中,我們可以增加多個觸發器。
到此,Spring已經與Quartz完美的結合了,我們接下來的工作就是啟動系統,開始排程了。
四、Cron表示式的詳細用法
Cron表示式是一個字串,字串以5或6個空格隔開,分開共6個或7個域,每一個域代表一個含義,Cron有如下兩種語法,格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year 或
Seconds Minutes Hours DayofMonth Month DayofWeek
欄位 |
允許值 |
允許的特殊字元 |
秒 |
0-59 |
- * / |
分 |
0-59 |
- * / |
小時 |
0-23 |
- |