Spring整合Quartz

来源:互联网 发布:开淘宝保证金怎么退 编辑:程序博客网 时间:2024/06/05 18:26

1. 创建JobDetail

JobDetailBean扩展于JobDetail,Bean的名称就是任务的名字,默认分组为default
jobClass:实现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>

0 0