Ssm整合quartz定时任务

Ssm整合quartz定时任务

1.添加maven

   <dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>2.2.0</version>
    </dependency>

2.配置spring-quartz.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 添加调度的任务bean 配置对应的类-->
    <bean id="myQuartz" class="com.athome.quarter.MyJob" />
    <!--配置调度具体执行的方法-->
    <bean id="myMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="myQuartz" /><!--将上面的任务bean myQuartz注入到这里-->
        <property name="targetMethod" value="runJob" />
        <!-- 使用Quartz做计划任务时,默认情况下,当前任务总会执行,无论前一个任务是否结束 -->
        <!-- 下面的concurrent属性默认为true,设置成false可以让任务按照顺序执行,上一个任务没有结束,下面的任务不会执行-->
        <property name="concurrent" value="false" />
    </bean>
    <!--配置调度执行的触发的时间-->
    <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="myMethod" />
        <property name="cronExpression">
            <!--每隔20秒执行一次-->
            <value>0/20 * * * * ?</value>
        </property>
  <!--
         0 0 2 * * ?    秒 分 时 天 月 日  每天凌晨2点
         */5 * * * * ?  每隔5秒执行一次
         0 */5 * * * ?  每隔5分钟执行一次
         0 30 0 * * ?   每天半夜12点30分执行一次
         0 15 10 ? * * 或 0 15 10 * * ? 每天上午10:15执行一次
         0 * 14 * * ?      每天14点到14:59分,每1分钟执行一次
         0 0-5 14 * * ?    每天14点到14:05分,每1分钟执行一次
         0 0 7-23 * * ?    每天7点到23点,每整点执行一次
         0 0 18,22 * * ?   每天18点、22点执行一次
         不全的话 自行百度。
        -->
    </bean>
    <!-- 
    quartz的调度工厂只能有一个,多个调度任务在list中添加 。
    bean中的id可能需要加上,之前我自己没加上导致启动到不知道触发器报错。不过也有看到没加上id也可以正常运作,可能是版本的原因吧。
    -->
    <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="myTrigger" />
            </list>
        </property>
    </bean>
</beans>

3.把spring-quartz.xml加到applicationContext.xml

<import resource="spring-quartz.xml" />

4.将spring-quartz.xml加载在web.xml中

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   classpath*:applicationContext.xml,
   classpath*:spring-quartz.xml
  </param-value>
</context-param>

5.编写对应的任务

在com.athome.quarter.MyJob类中写一个方法,方法名叫runJob。

类名和方法名要与spring-quartz.xml一一对应。

package com.athome.quarter;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MyJob {
    public void runJob(){
        System.out.println("现在的时间是:"+new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss").format(new Date()));
    }
}

结果:

2020-12-08 21:50:00,000 23106  [SchedulerThread] DEBUG rtz.core.QuartzSchedulerThread  - batch acquisition of 0 triggers
2020-12-08 21:50:00,000 23106  [actory_Worker-2] DEBUG    org.quartz.core.JobRunShell  - Calling execute on job DEFAULT.myMethod
现在的时间是:2020-12-08:21:50:00
2020-12-08 21:50:00,005 23111  [SchedulerThread] DEBUG rtz.core.QuartzSchedulerThread  - batch acquisition of 1 triggers
2020-12-08 21:50:20,001 43107  [SchedulerThread] DEBUG rtz.core.QuartzSchedulerThread  - batch acquisition of 0 triggers
2020-12-08 21:50:20,001 43107  [actory_Worker-3] DEBUG    org.quartz.core.JobRunShell  - Calling execute on job DEFAULT.myMethod
现在的时间是:2020-12-08:21:50:20
2020-12-08 21:50:20,001 43107  [SchedulerThread] DEBUG rtz.core.QuartzSchedulerThread  - batch acquisition of 1 triggers
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值