当前位置: 首页 > news >正文

【Spring系列】spring mvc整合任务调度

一、在dispatcher-servlet.xml中增加定时任务扫描路径和其余配置信息

 

xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
 <!--集成注解schedule-->
    <context:component-scan base-package="com.slp.task"/>
    <task:executor id="executor" pool-size="5"/>
    <!--配置线程池-->
    <task:scheduler id="scheduler" pool-size="10"/>
    <!--开启task注解-->
    <task:annotation-driven scheduler="scheduler" executor="executor"/>
    <!--集成注解schedule-->

  

二、使用示例

package com.slp.task;

import org.apache.log4j.Logger;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author sanglp
 * @create 2018-02-02 11:23
 * @desc 设置多个定时任务示例
 **/

@Component
public class DemoTask2 {
    private Logger log = Logger.getLogger(DemoTask2.class);

        int i=0 ;
        int j=0;
        int k=0;


    /**
     * @Scheduled可以作为一个触发源添加到一个方法中,以一个固定的时间延迟调用一次执行,这个周期是以上一个调度任务的完成时间为基准,在上一个任务完成之后5s后再次执行
     */
    @Scheduled(fixedDelay = 5000)//@Scheduled可以作为一个触发源添加到一个方法中,以一个固定的时间延迟调用一次执行,这个周期是以上一个调度任务的完成时间为基准,在上一个任务完成之后5s后再次执行
    public void demo1(){
        log.info("定时任务1开始执行啦!!!");
        long begin = System.currentTimeMillis();
        i=i+1;
        System.out.println("我是小i我要长大了"+i);

        long end = System.currentTimeMillis();

        log.info("定时任务1执行结束,花费时间为"+(end-begin)+"毫秒");
    }

    /**
     * 以一个固定延迟时间5秒中调用一次执行,这个周期是以上一个任务开始时间为基准,从上一个任务开始执行后5s再次调用
     */
    @Scheduled(fixedRate  = 5000)
    public void demo2(){
        log.info("定时任务2开始执行啦!!!");
        long begin = System.currentTimeMillis();
        j=j+1;
        System.out.println("我是小j我要长大了"+j);

        long end = System.currentTimeMillis();

        log.info("定时任务2执行结束,花费时间为"+(end-begin)+"毫秒");
    }

    /**
     * 在特定的时间执行,使用cron表达式
     */
    @Scheduled(cron = "0 34 11 * * ?")
    public void demok(){
        log.info("定时任务3开始执行啦!!!");
        long begin = System.currentTimeMillis();
        k=k+1;
        System.out.println("我是小k我要长大了"+k);

        long end = System.currentTimeMillis();

        log.info("定时任务3执行结束,花费时间为"+(end-begin)+"毫秒");
    }
}

  日志信息:

定时任务1开始执行啦!!!
我是小i我要长大了7
[INFO ] 2018-02-02 13:09:08,378 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:34)
定时任务1执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:13,273 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:42)
定时任务2开始执行啦!!!
我是小j我要长大了1
[INFO ] 2018-02-02 13:09:13,273 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:50)
定时任务2执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:13,389 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:27)
定时任务1开始执行啦!!!
我是小i我要长大了8
[INFO ] 2018-02-02 13:09:13,401 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:34)
定时任务1执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:18,249 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:42)
定时任务2开始执行啦!!!
我是小j我要长大了1
[INFO ] 2018-02-02 13:09:18,249 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:50)
定时任务2执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:18,402 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:27)
定时任务1开始执行啦!!!
我是小i我要长大了9
[INFO ] 2018-02-02 13:09:18,402 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:34)
定时任务1执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:23,248 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:42)
定时任务2开始执行啦!!!
我是小j我要长大了1
[INFO ] 2018-02-02 13:09:23,248 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:50)
定时任务2执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:23,403 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:27)
定时任务1开始执行啦!!!
我是小i我要长大了10
[INFO ] 2018-02-02 13:09:23,403 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:34)
定时任务1执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:28,271 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:42)
定时任务2开始执行啦!!!
我是小j我要长大了1
[INFO ] 2018-02-02 13:09:28,271 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:50)
定时任务2执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:28,427 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:27)
定时任务1开始执行啦!!!
我是小i我要长大了11
[INFO ] 2018-02-02 13:09:28,428 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:34)
定时任务1执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:33,250 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:42)
定时任务2开始执行啦!!!
我是小j我要长大了1
[INFO ] 2018-02-02 13:09:33,250 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:50)
定时任务2执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:33,428 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:27)
定时任务1开始执行啦!!!
我是小i我要长大了12
[INFO ] 2018-02-02 13:09:33,428 method:com.slp.task.DemoTask2.demo1(DemoTask2.java:34)
定时任务1执行结束,花费时间为0毫秒
[INFO ] 2018-02-02 13:09:38,291 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:42)
定时任务2开始执行啦!!!
我是小j我要长大了1
[INFO ] 2018-02-02 13:09:38,291 method:com.slp.task.DemoTask2.demo2(DemoTask2.java:50)
定时任务2执行结束,花费时间为0毫秒

  

三、cron表达式

一个cron表达式有至少6个(也可能是7个)有空格分隔的时间元素

按顺序依次为:

  1. 秒(0~59)
  2. 分钟(0~59)
  3. 小时(0~23)
  4. 天(0~31)
  5. 月(0~11)
  6. 星期(1~7 SUN MON TUE WED THU FRI SAT)
  7. 年份(1970-2099)

转载于:https://www.cnblogs.com/dream-to-pku/p/8404694.html

相关文章:

  • 【BZOJ2301】Problem B
  • linux 全部卸载python yum 重新安装
  • 【进阶4-4期】Lodash是如何实现深拷贝的
  • 提问的艺术
  • git学习(一) 如何将项目上传到github
  • HTML和CSS第一篇
  • git的基本使用
  • Linux基础命令---显示路由表route
  • TCP的三次握手和四次挥手
  • 富文本
  • 记一次monolog的RotatingFileHandler使用
  • pandas中的iloc和loc的区别
  • iOS-多个UIScrollView滑动嵌套(仿微博、抖音、网易云个人详情页)
  • python3基础-字符串
  • 小李飞刀:SQL题目刷起来!
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Flannel解读
  • gulp 教程
  • JSONP原理
  • Mysql数据库的条件查询语句
  • overflow: hidden IE7无效
  • VUE es6技巧写法(持续更新中~~~)
  • win10下安装mysql5.7
  • 闭包--闭包之tab栏切换(四)
  • 大主子表关联的性能优化方法
  • 动态规划入门(以爬楼梯为例)
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 我建了一个叫Hello World的项目
  • 湖北分布式智能数据采集方法有哪些?
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​linux启动进程的方式
  • !$boo在php中什么意思,php前戏
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (6)STL算法之转换
  • (pojstep1.3.1)1017(构造法模拟)
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (南京观海微电子)——I3C协议介绍
  • (七)Knockout 创建自定义绑定
  • (生成器)yield与(迭代器)generator
  • .libPaths()设置包加载目录
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .Net中间语言BeforeFieldInit
  • .pop ----remove 删除
  • @DataRedisTest测试redis从未如此丝滑
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [Android 数据通信] android cmwap接入点
  • [CISCN 2023 初赛]go_session
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [IE编程] 如何在IE8 下调试BHO控件/工具栏(调试Tab进程)
  • [jquery]this触发自身click事件,当前控件向上滑出