Quartz - Spring 整合
Spring对Quartz的整合也从侧面反映出Quartz功能的强大。
?
1. Spring.Quartz结构介绍
?
?
?
错误: Trigger为Abstract Class而非interface?
?
JobDetailBean和QuartzJobBean:
扩展自Quartz的JobDetail和Job,JobDetailBean使用bean name作为job name,并且不指定group name默认为"DEFAULT"
优点:JobDetailBean可通过Map jobDataAsMap对QuartzJobBean的属性进行注入,注入方法:将jobDataAsMap中key的value注入给QuartzJobBean的key属性。
?
MethodInvokingJobDetailFactoryBean:
可将任意的一个Java Bean成为一个可调度的Job。
通过属性targetObject(Java Bean实例)和属性targetMethod(任务实现方法的方法名)实现。
?
SimpleTriggerBean和CronTriggerBean:
通过Spring bean与JobDetailBean进行关联,并使用JobDetailBean的bean name作为name,JobDetailBean的group name作为group name。
并且SimpleTriggerBean的startTime默认为当前时间,repeatCount为无限制。
?
SchedulerFactoryBean:
用以替代Quartz中的Scheduler,通过向triggers属性注入trigger list对任务进行调度。
?
2.实例:
?
配置文件applicationContext.xml
?
<?xml version="1.0" encoding="UTF-8"?>
<beans
?xmlns="http://www.springframework.org/schema/beans"
?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
?
?<!-- Spring quartz -->
?<bean name="jobDetail" value="com.siyuan.spring.quartz.JobImpl" />
??<property name="jobDataAsMap">
???<map>
????<entry key="name" value="jobImplTest"/>
???</map>
??</property>
?</bean>
?
?<bean name="trigger" ref="jobDetail" />
??<property name="startDelay" value="10000" />
??<property name="repeatCount" value="3" />
??<property name="repeatInterval" value="10000" />
?</bean>
?
?<bean name="reflectJob" ref="reflectJob" />
??<property name="targetMethod" value="doJob" />
?</bean>
?
?<bean name="cronTrigger" ref="reflectJobDetail" />
??<property name="cronExpression" value="0/10 * * * * ?" />
?</bean>
?
?<bean name="schduler" + new Date());
??System.out.println("Current name: " + name);
?}
}
2)ReflectJob.java
package com.siyuan.spring.quartz;
import java.util.Date;
public class ReflectJob {
?
?public void doJob(){
??System.out.println("In reflectJob current time : " + new Date());
?}
?
}
3)SpringQuartzTest.java
/**
?* SpringQuartzTest.java
?* Create by Administrator at 9:23:31 PM
?*/
package com.siyuan.spring.quartz;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
?* @author Administrator
?* @Description
?*/
public class SpringQuartzTest {
?/**
? * @param args
? */
?public static void main(String[] args) {
??ApplicationContext ctxt = new ClassPathXmlApplicationContext("applicationContext.xml");
?}
}
3.参考资料
?
Spring开发者指南,可从本人的SSH中下载。
?