1. 创建JobDetail
JobDetailBean扩展于JobDetail,Bean的名称就是任务的名字,默认分组为defaultjobClass:实现Job的任务类
beanName:默认为Bean的id, 对应任务的名称
jobDataAsMap:类型为Map, 为任务对应的JobDataMap提供直,
applicationContextJobDataKey:可以将Spring ApplicationContext的引用保存到JobDataMap中,
以便在Job的代码中访问ApplicationCOntext,用户需要指定一个键。
jobListenerNames:类型为String[], 指定注册在Scheduler中的JobListeners名称
2. MethodInvokingJobDetailFactoryBean
//将一个普通的业务方法,封装成一个jobDetail
<bean id="myService" class="com.wzz.Service"></bean>
<bean id="jobDetail_1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myService"/>
<property name="targetMethod" value="doJob"/>
<property name="concurrent="false"/>//指定任务是否有状态
</bean>
doJob方法既可以是static的,也可以使非静态的,但是不能拥有入参, 不能被序列化,不能被持久化
3. 创建Trigger
1. SimpleTriggerBean
jobDetail:beanName:
jobDataAsMap:
startDelay:延迟多少事件开始触发
triggerListenerNames: String[]
2. CronTriggerBean
<bean id="checkImagesTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression="0/5 **** ?"/>
</bean>
4. 创建Scheduler
SchedulerFactoryBean
calendars:Map, 注册Calendar
jobDetail:JobDetail[]
autoStartup:初始化后是否马上启动Schedular
startDelay:初始化完成后,延迟多少秒启动
5. 总体代码示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean name="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.books.quartzJob.MyJob"></property>
<property name="durability" value="true" />
<property name="group" value="aaa"></property>
</bean>
<bean id="simpleTrigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="startDelay" value="1000"/>
<property name="repeatInterval" value="1000"/>
<property name="repeatCount" value="100"/>
</bean>
<bean id="simpleTrigger2" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="startDelay" value="1000"/>
<property name="repeatInterval" value="2000"/>
<property name="repeatCount" value="100"/>
</bean>
<bean id="schedualer" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger1"/>
<ref bean="simpleTrigger2"/>
</list>
</property>
</bean>
</beans>