dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(九)之spring中定時器quartz的整合
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010046908/article/details/54930240
今天來總結一下。Spring中quartz的使用。
1、Quartz是什麼?
Quartz 是一個開源的作業排程框架,它完全由 Java 寫成,並設計用於 J2SE 和 J2EE 應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執行一個作業而建立簡單的或複雜的排程。
2、Quartz的分類
2.1、按照作業類的繼承方式來分,可以分為兩類
- 作業類需要繼承自特定的作業類基類,如Quartz中需要繼承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要繼承自java.util.TimerTask。
- 作業類即普通的java類,不需要繼承自任何基類。
注意:推薦使用第二種方式,因為這樣所以的類都是普通類,不需要事先區別對待。
2.2、按照任務排程的觸發時機來分,這裡主要是針對作業使用的觸發器,主要有以下兩種:
-
每隔指定時間則觸發一次,在Quartz中對應的觸發器為:org.springframework.scheduling.quartz.SimpleTriggerBean
-
每到指定時間則觸發一次,在Quartz中對應的排程器為:org.springframework.scheduling.quartz.CronTriggerBean
注意:並非每種任務都可以使用這兩種觸發器,如java.util.TimerTask任務就只能使用第一種。Quartz和spring task都可以支援這兩種觸發條件。
3、新增Quartz依賴
<!-- 定時器的使用 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
4、Spring中quartz的使用(作業類即普通的java類的使用)
4.1、定義作業類
package com.lidong.dubbo.core.util.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @專案名稱:lidong-dubbo
* @類名:SpringQtz
* @類的描述: 作業類的排程
* @作者:lidong
* @建立時間:2017/2/8 下午5:41
* @公司:chni
* @QQ:1561281670
* @郵箱:lidong1665@163.com
*/
public class SpringQtz {
static Logger logger = LoggerFactory.getLogger(SpringQtz.class);
private static int counter = 0;
/**
* 排程的方法
*/
public void execute() {
long ms = System.currentTimeMillis();
logger.info(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(ms))+" "+"(" + counter++ + ")");
}
}
4.2、在Spring中配置作業類
<!-- 要呼叫的工作類 -->
<bean id="SpringQtzJob" class="com.lidong.dubbo.core.util.quartz.SpringQtz" />
4.3 、定義呼叫物件和方法
<!-- 定義呼叫物件和呼叫物件的方法 -->
<bean id="SpringQtzJobMethod"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 呼叫的類 -->
<property name="targetObject">
<ref bean="SpringQtzJob" />
</property>
<!-- 要執行的方法名稱 -->
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
4.4、配置排程觸發器
<!-- ======================== 排程觸發器 ======================== -->
<bean id="CronTriggerBean"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!--作業詳情 -->
<property name="jobDetail" ref="SpringQtzJobMethod"></property>
<!-- cron表示式 -->
<property name="cronExpression" value="0/10 * * * * ?"></property>
</bean>
4.5、配置排程工廠
<!-- ======================== 排程工廠 ======================== -->
<bean id="SpringJobSchedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="CronTriggerBean" />
<ref bean="CronTriggerBean1" />
</list>
</property>
</bean>
5、quartz的cron 表示式
一個cron表示式至少有6個,是按照空格來分割的時間元素。
按照順序為:
- 秒 0-59
- 分鐘 0-59
- 小時 0-23
- 天 (月)1-31
- 月 0-31
- 天 (星期)1-7
-
年份 1970- 遞增
給幾個例子:
"30 * * * * ?" 每半分鐘觸發任務
"30 10 * * * ?" 每小時的10分30秒觸發任務
"30 10 1 * * ?" 每天1點10分30秒觸發任務
"30 10 1 20 * ?" 每月20號1點10分30秒觸發任務
"30 10 1 20 10 ? *" 每年10月20號1點10分30秒觸發任務
"30 10 1 20 10 ? 2011" 2011年10月20號1點10分30秒觸發任務
"30 10 1 ? 10 * 2011" 2011年10月每天1點10分30秒觸發任務
"30 10 1 ? 10 SUN 2011" 2011年10月每週日1點10分30秒觸發任務
"15,30,45 * * * * ?" 每15秒,30秒,45秒時觸發任務
"15-45 * * * * ?" 15到45秒內,每秒都觸發任務
"15/5 * * * * ?" 每分鐘的每15秒開始觸發,每隔5秒觸發一次
"15-30/5 * * * * ?" 每分鐘的15秒到30秒之間開始觸發,每隔5秒觸發一次
"0 0/3 * * * ?" 每小時的第0分0秒開始,每三分鐘觸發一次
"0 15 10 ? * MON-FRI" 星期一到星期五的10點15分0秒觸發任務
"0 15 10 L * ?" 每個月最後一天的10點15分0秒觸發任務
"0 15 10 LW * ?" 每個月最後一個工作日的10點15分0秒觸發任務
"0 15 10 ? * 5L" 每個月最後一個星期四的10點15分0秒觸發任務
"0 15 10 ? * 5#3" 每個月第三週的星期四的10點15分0秒觸發任務
基本上就這麼多了。
相關文章
- Quartz - Spring整合Quartz實現叢集的定時任務quartzSpring
- Quartz - Spring和Quartz的整合quartzSpring
- 使用Spring整合Quartz輕鬆完成定時任務Springquartz
- Spring 整合 Quartz 實現動態定時任務Springquartz
- 初識spring與quartz整合實現定時任務Springquartz
- spring-quartz整合Springquartz
- 普通web整合quartz跑定時任務Webquartz
- Spring Quartz定時器&n…Springquartz定時器
- MyBatis(九) 整合Spring、整合SpringMVCMyBatisSpringMVC
- Grails整合Quartz外掛實現定時任務(Job)AIquartz
- spring整合quartz的叢集配置例項Springquartz
- Spring整合Quartz案例使用RAM儲存方式Springquartz
- Spring整合Quartz案例使用JDBC儲存方式SpringquartzJDBC
- springboot整合Quartz實現動態配置定時任務Spring Bootquartz
- Spring Boot整合quartz實現定時任務並支援切換任務資料來源Spring Bootquartz
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(五)Spring中spring-data-redis的使用ASTS3SpringMVCMongoDBRedis
- Spring Scheduler定時任務 + QuartzSpringquartz
- 如何實現Spring Boot和Quartz整合? - Nguyen Phuc HaiSpring BootquartzAI
- 【Springboot】快速整合QuartzSpring Bootquartz
- SpringBoot 整合 Quartz + MySQLSpring BootquartzMySql
- Quartz.NET整合UI版quartzUI
- Spring Boot 配置 Quartz 定時任務Spring Bootquartz
- spring中定時器的使用Spring定時器
- Spring 4+Redis+ActiveMQ+MongoDB+MySql+Quartz 整合 註解方式SpringRedisMQMongoDBMySqlquartz
- springboot專案整合quartz動態建立,停止,恢復,刪除定時任務,整合swagger3.0Spring BootquartzSwagger
- Spring中Quartz排程器的使用Springquartz
- Spring+quartz 實現定時任務Springquartz
- spring quartz如何實現多工定時Springquartz
- Spring同時整合JPA與MybatisSpringMyBatis
- [文件中]Struts與Spring整合Spring
- SpringBoot第九篇:整合Spring Data JPASpring Boot
- Autofac 和 Quartz.Net 自動注入的整合quartz
- Spring Boot(九):定時任務Spring Boot
- spring2.0 quartz 靜態定時任務Springquartz
- WebService之Spring+CXF整合示例WebSpring
- Spring整合Mybatis方式一 - 常規整合 - 註冊對映器SpringMyBatis
- Spring的Junit整合Spring
- Spring系列之整合MongoDB的2種方法SpringMongoDB