quartz spring配置

来源:互联网 发布:ti 知乎 编辑:程序博客网 时间:2024/06/06 02:02

CronTriggerFactoryBean:基于时间刻度,可以设置具体时间。类似与日历的定时方式

SimpleTriggerFactoryBean:基于调度间隔时间 ,有延时启动功能

定时器有三个要素:

1. job:具体需要定时执行的方法,需要具体到某一个类下的某一个具体方法。

2. trigger:触发器,一个触发器需要一个job来对应

3. schedule:调度器(可以调度多个trigger,经检验可以包括不同类的trigger,这句话是抄的没有验证过,应该是可行的,自己的项目中一个调度器实现了两个trigger,一个是完全由XML配置的,另一个是由JAVA代码实现的)

    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">        <property name="overwriteExistingJobs" value="true"/>        <property name="triggers">                <ref bean="SimpleTrigger"/>        </property>        <property name="autoStartup" value="true"></property>    </bean>    <!-- LbsMessageJob:定义目标bean和bean中的方法 -->    <bean id="LbsMessageJob" class="com.wxjss.lbs.quartz.LbsMessageJob"/>    <!-- 配置定时实现方法-->    <bean id="LbsMessageJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <property name="targetObject"> <!-- 实现的执行类-->            <ref bean="LbsMessageJob"/>        </property>        <property name="targetMethod">  <!-- 要执行的方法名称 -->            <value>execute</value>        </property>    </bean>    <!-- 调度触发器 -->    <bean id="SimpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">        <property name="jobDetail" ref="LbsMessageJobMethod"></property>        <property name="repeatInterval" >            <value>2000</value> <!--设置任务重复时间-->        </property>        <property name="startDelay">  <!--延时开始-->            <value>0</value>        </property>        <property name="repeatCount"> <!--默认0就是不重复,n重复N次,-1一直重复-->            <value>-1</value>        </property>    </bean>
其中LbsMessageJob类中的方法是由java实现的:

public class LbsMessageJob  {    public LbsMessageJob() {    }    public void execute() {        System.err.println("hello! "); //经过XML配置以后每次定时结束都会跑过来执行这个方法    }}

上个结果图: