ssm框架集成Quartz定时器

时间:2022-04-18 23:27:49

第一步:添加依赖

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>

第二步:配置spring-web.xml

    <!-- 定义一个任务类 -->
    <bean id="MyJob" class="com.runmin.bajie.schedualer.Myjob"></bean>

    <!-- jobDetail -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="MyJob"></property>
        <property name="targetMethod" value="execute"></property>
        <property name="concurrent" value="false" /><!-- 作业不并发调度  -->
    </bean>

    <!-- 定义trigger 触发器 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetail"></property>
        <property name="cronExpression" value="0/10 * * * * ?"></property>
    </bean>

    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
           <list>
                <ref bean="cronTrigger"/>
           </list>
        </property>
    </bean>

第三步:写定时业务

package com.runmin.bajie.schedualer;

import java.util.Date;

public class Myjob {

    public void execute(){


        System.out.println("Quartz的任务调度!!!"+(new Date()).toString());

    }

}

因为配置了concurrent等于false,所以假如run方法的执行时间超过10秒,在执行完之前即使时间已经超过了10秒下一个定时计划执行任务仍不会被开启,如果是true,则不管是否执行完,时间到了都将开启。

另外一点就是,启动项目以后还要发请求,才能启动定时器。