Quartz 是個開放源碼項目,提供了豐富的作業調度集。我目前接觸到的quartz只是在我做的java項目中定時執行任務,我的項目因為是在spring的基礎上搭建的想要整合quartz非常的簡單。
對於非spring項目的應用,它也很強大因為我沒有實際測試過不做介紹。如果有需要的可以查看軟件工程師 Michael Lipton 和 IT 架構師 Soobaek Jang 對 Quartz API 進行的介紹。鏈接地址:用 Quartz 進行作業調度
下面主要說一個quartz在spring項目中的應用
首先添加所需要的jar包:quartz-1.5.2.jar 和spring框架所需要的架包
首先寫個一個定時執行任務的類
public class QuartzJob {
public void work()
{
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");//時:分:秒:毫秒
System.out.println("Quartz的任務調度"+sdf.format(d));
}
//手動啟動測試是否定時任務是否編寫成功
public static void main(String[] args) {
String[] configs={"file:D:/Workspaces/MyEclipse 8.5/.metadata/.me_tcat/webapps/zcz_test/WEB-INF/classes/applicationContext-quartz.xml"};
ApplicationContext ac=new ClassPathXmlApplicationContext(configs);
}
}
在寫一個spring的配置文件 applicationContext-quartz.xml(名字隨便起,但要在web.xml引用)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="testJob" class="quartz.QuartzJob" />
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="testJobDetail" />
<property name="cronExpression" value="9,18,28,29,39,38,46,43,52,57 * * * * ?" />
</bean>
<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testJob" />
<property name="targetMethod" value="work" />
<property name="concurrent" value="false" />
</bean>
<bean id="localQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
<property name="triggers">
<list>
<ref bean="testTrigger"/>
<!--
<ref bean="iptvCheckTrigger"/>
<ref bean="iptvParseTrigger"/>
<ref bean="IptvUploadTrigger"/>
-->
</list>
</property>
</bean>
</beans>