zoukankan      html  css  js  c++  java
  • Spring的定时任务(任务调度)<task:scheduled-tasks>

    原文:https://www.cnblogs.com/luchangyou/p/6856725.html

    Spring内部有一个task是Spring自带的一个设定时间自动任务调度,提供了两种方式进行配置,一种是注解的方式,而另外一种就是XML配置方式了。注解方式比较简洁,XML配置方式相对而言有些繁琐,但是应用场景的不同,两者又各有优点,所以具体使用还是根据需求来划分。因为任务调度这样的需求,通常改动都是比较多的,如果用注解的方式改动就变得麻烦了,必须去重新编译。所以更多的时候我选择用XML配置的方式。

    下面就介绍一下两种方式的配置:

    第一种:XML配置方式

    第一步:编写作业类

    即普通的pojo,如下:

    复制代码
    import org.springframework.stereotype.Service;  
    @Service  
    public class TaskJob {  
          
        public void job1() {  
            System.out.println(“任务进行中。。。”);  
        }  
    } 
    复制代码

    第二步:添加spring-task配置文件,相关头信息如下:

    复制代码
    <?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:task="http://www.springframework.org/schema/task"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                             http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">
    
        <task:scheduled-tasks>
    
            <task:scheduled ref="taskJob" method="job1" cron="0 0 5 * * ?"/> </task:scheduled-tasks> 

    </beans>
    复制代码

    说明:ref参数指定任务类,method指定需要运行的方法,cron及cronExpression表达式见文章结尾。

    第三步:在spring配置文件中引入spring-task配置文件

    。。。。。
    <!-- 引入Spring的任务配置文件。 -->
        <import resource="xxx.xml" />
    。。。。。

    这样配置就完成了,可以进行测试验证了。

    第二种:使用注解形式

    首先看下源文件中@Scheduled注解的定义

    复制代码
    @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})  
    @Retention(RetentionPolicy.RUNTIME)  
    @Documented  
    public @interface Scheduled  
    {  
      public abstract String cron();  
      
      public abstract long fixedDelay();  
      
      public abstract long fixedRate();  
    } 
    复制代码

    可以看出该注解有三个方法或者叫参数,分别表示的意思是:

    cron:指定cron表达式

    fixedDelay:官方文档解释:An interval-based trigger where the interval is measured from the completion time of the previous task. The time unit value is measured in milliseconds.即表示从上一个任务完成开始到下一个任务开始的间隔,单位是毫秒。

    fixedRate:官方文档解释:An interval-based trigger where the interval is measured from the start time of the previous task. The time unit value is measured in milliseconds.即从上一个任务开始到下一个任务开始的间隔,单位是毫秒。

    下面来说明一下具体配置步骤:

    第一步:编写pojo

    复制代码
    import org.springframework.scheduling.annotation.Scheduled;    
    import org.springframework.stereotype.Component;  
      
    @Component(“taskJob”)  
    public class TaskJob {  
        @Scheduled(cron = "0 0 3 * * ?")  
        public void job1() {  
            System.out.println(“任务进行中。。。”);  
        }  
    } 
    复制代码

    第二步:在spring配置文件开启task:

    <task:annotation-driven/>

    这样 就实现了注解方式的配置。

    cron及cronExpression表达式:

     

    可视化设置:http://cron.qqe2.com/

    复制代码
    cronExpression的配置说明
    字段   允许值   允许的特殊字符
    秒    0-59    , - * /
    分    0-59    , - * /
    小时    0-23    , - * /
    日期    1-31    , - * ? / L W C
    月份    1-12 或者 JAN-DEC    , - * /
    星期    1-7 或者 SUN-SAT    , - * ? / L C #
    年(可选)    留空, 1970-2099    , - * / 
    - 区间  
    * 通配符  
    ? 你不想设置那个字段
    下面只例出几个式子
    
    CRON表达式    含义 
    "0 0 12 * * ?"    每天中午十二点触发 
    "0 15 10 ? * *"    每天早上10:15触发 
    "0 15 10 * * ?"    每天早上10:15触发 
    "0 15 10 * * ? *"    每天早上10:15触发 
    "0 15 10 * * ? 2005"    2005年的每天早上10:15触发 
    "0 * 14 * * ?"    每天从下午2点开始到2点59分每分钟一次触发 
    "0 0/5 14 * * ?"    每天从下午2点开始到2:55分结束每5分钟一次触发 
    "0 0/5 14,18 * * ?"    每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 
    "0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发 
    "0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发 
    "0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10:15触发 
    复制代码
  • 相关阅读:
    fzuoj Problem 2177 ytaaa
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Capture the Flag
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Team Formation
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Beauty of Array
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Lunch Time
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Convert QWERTY to Dvorak
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest May Day Holiday
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Demacia of the Ancients
    zjuoj The 12th Zhejiang Provincial Collegiate Programming Contest Ace of Aces
    csuoj 1335: 高桥和低桥
  • 原文地址:https://www.cnblogs.com/natian-ws/p/10852524.html
Copyright © 2011-2022 走看看