前言:
在一些項目中墩划,往往需要定時的去執(zhí)行一些任務(wù),比如商城項目嗡综,每天0點去統(tǒng)計前一天的銷量乙帮。那么如何實現(xiàn)呢,總不可能我們每天0點手動的去執(zhí)行統(tǒng)計銷量的方法吧蛤高,這時就quartz就起作用了蚣旱。
歡迎大家關(guān)注我的公眾號 javawebkf碑幅,目前正在慢慢地將簡書文章搬到公眾號戴陡,以后簡書和公眾號文章將同步更新塞绿,且簡書上的付費文章在公眾號上將免費。
quartz簡介:
Quartz是OpenSymphony開源組織在Job scheduling領(lǐng)域又一個開源項目恤批,它可以與J2EE與J2SE應(yīng)用程序相結(jié)合也可以單獨使用异吻。Quartz可以用來創(chuàng)建簡單或為運行十個,百個喜庞,甚至是好幾萬個Jobs這樣復(fù)雜的程序诀浪。Jobs可以做成標(biāo)準(zhǔn)的Java組件或 EJBs。Quartz的最新版本為Quartz 2.3.0延都。
以上是百度百科介紹雷猪,我們可以簡單的理解其為一個定時調(diào)度工具(定時器)。
spring整合quartz:
網(wǎng)上也有很多教程晰房,好多都是基于配置方式求摇,我們使用當(dāng)然怎么簡單就怎么用,所以這里介紹基于注解方式整合quartz殊者。前提:你需要有一個能運行的web項目与境。
1、引依賴:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
注意:網(wǎng)上有的教程說還必須引入spring-context-support
依賴猖吴,但是本項目沒有引入這個也可以正常使用quartz摔刁,可能是最新版不需要這個依賴了。
2海蔽、開啟quartz的注解:
一般我們都在service層使用quartz共屈,所以在spring-service.xml
中進行如下配置:
<context:component-scan base-package="com.zhu.meilianMall.service" />
<task:annotation-driven/>
注意:第一行掃描包的配置是ssm整合本來就需要的,等下quartz的注解也只能在這個包下使用党窜。
3趁俊、使用quartz的注解:
在com.zhu.meilianMall.service
包下創(chuàng)建測試類,在需要定時執(zhí)行的方法上加上@Scheduled(cron = "cron表達(dá)式")
刑然,如下:
package com.zhu.meilianMall.service;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
/**
* 測試quartz
* @author zhu
*
*/
@Service
public class QuartzTest {
@Scheduled(cron = "0/2 * * * * ?")
public void run() {
System.out.println("############### quartz整合成功! "+new Date()+"#####################");
}
}
注意:既然是在service層測試寺擂,測試類不要忘了加@Service
注解;cron表達(dá)式不會寫沒關(guān)系泼掠,百度一下“cron表達(dá)式在線生成器”怔软,就會有很多,這里也給出一個:在線cron表達(dá)式生成器择镇。本案例中是每隔2秒執(zhí)行一次run方法挡逼。
4、測試:
啟動tomcat訪問項目腻豌,然后控制臺就打印出run方法的執(zhí)行結(jié)果了家坎。
run方法每隔兩秒打印一次嘱能,整合成功!
總結(jié):
本人對于quartz并不了解,其功能也不止本案例中提及的虱疏。不過與spring整合確實夠簡單惹骂,只需要引依賴、開啟注解做瞪、使用注解3步即搞定对粪。