1. 程式人生 > >quartz任務排程框架實現任務定時執行,不傳參的配置(一)

quartz任務排程框架實現任務定時執行,不傳參的配置(一)

quartz是一個任務排程框架,可以用它來實現一些需要定時執行的任務。

本次實現的是spring配置整合quartz

1.配置如下:目標bean和bean中的方法需要自己定義,這個方法就是要執行的job(定時執行)

 <!--使用MethodInvokingJobDetailFactoryBean,任務類可以不實現Job介面,通過targetMethod指定呼叫方法-->
    <!-- 定義目標bean和bean中的方法 -->
    <bean id="SpringQtzJob" class="cn.thinkjoy.LawDataForExcel.quartz.QuartzApplication"/>
    <bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" lazy-init="true">
        <property name="targetObject">
            <ref bean="SpringQtzJob"/>
        </property>
        <property name="targetMethod">
            <value>execute</value>
        </property>
        <!-- 同一任務在前一次執行未完成而Trigger時間又到時是否併發開始新的執行, 預設為true. -->
        <property name="concurrent" value="false"/>
    </bean>

 <!--排程觸發器
        克隆表示式可以包括7個欄位:秒、分、小時、月內日期、月、周內日期、年(可選欄位)
        每天下午5點半執行一次
          0 30 17 * * ? *   0 */1 * * * ?
    -->
    <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="SpringQtzJobMethod"/>
        <property name="cronExpression" value="0 30 17 * * ? *"/>
    </bean>

    <!--排程工廠-->
    <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="CronTriggerBean"/>
            </list>
        </property>
    </bean>

在main方法裡呼叫

 ApplicationContext context = new
                ClassPathXmlApplicationContext("classpath*:spring/spring.xml");
        Scheduler scheduler= (StdScheduler) context.getBean("SpringJobSchedulerFactoryBean");
        scheduler.start();