美文网首页
Spring Quartz 定时器

Spring Quartz 定时器

作者: Clark_ | 来源:发表于2020-03-17 20:59 被阅读0次

    1、所需依赖

    <!-- spring 定时器需要  -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>4.3.9.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.quartz-scheduler</groupId>
          <artifactId>quartz</artifactId>
          <version>2.2.1</version>
        </dependency>
        <dependency>
          <groupId>org.quartz-scheduler</groupId>
          <artifactId>quartz-jobs</artifactId>
          <version>2.2.1</version>
        </dependency>
    

    2、创建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"
           xmlns:util="http://www.springframework.org/schema/util"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                               http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    
        <!-- 定时器的java文件,在这个文件里面进行定时器的操作 -->
        <bean id="userTask" class="com.zqu.util.Task" >
    <!--         
    <property name="timeService"> 
                <ref bean="timeService" />
            </property>
    这里注入需要用到的service -->
        </bean>
        <!-- 定义调用对象和调用对象的方法 --> 
        <bean id="userTaskDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject" ref="userTask" /><!-- 这里对应着上面的class文件 -->
        <!-- 调用类中的方法 -->
        <property name="targetMethod" value="run" /><!-- 这里的run是上面java文件中的方法名 -->
        <property name="concurrent" value="false" />
        </bean>
        
        <!-- 定义触发时间 -->
        <bean id="userTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
            <property name="jobDetail" ref="userTaskDetail" />
            <!-- cron表达式 -->
            <property name="cronExpression">
                <value>0 0 0 * * ? </value><!-- 每天零点触发 -->
                <!-- 
                秒  分  时  日  月
                0 * * * * ?:这个表示每秒的0秒调用一下定时器;
                0/2 * * * * ?:这个表示从每分的第0秒开始,每2秒执行一次userTask这个java文件中的userTaskDetail这个函数;
                0 0 1 * * ?:这个表示每天的1点开始执行定时器;
                 -->
            </property>
        </bean>
        
        <bean id="JobSchedule"  lazy-init="false"  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="userTaskTrigger"/><!-- 对应上面的触发时间 -->
                </list>
            </property>
        </bean>
    </beans>
    

    3、将quartz.xml加入到web中去

    <!-- 加载所有的配置文件 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml,classpath:quartz.xml </param-value>
        </context-param>
    

    4、创建Task文件

    package com.zqu.util;

    import org.springframework.beans.factory.annotation.Autowired;

    import com.reassure.user.entity.User;

    public class Task {

    public void run(){
        
        
    }
    

    }

    参考MoPoint

    相关文章

      网友评论

          本文标题:Spring Quartz 定时器

          本文链接:https://www.haomeiwen.com/subject/ebmxyhtx.html