一、在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)

【Spring系列】spring mvc整合任务调度的更多相关文章

  1. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  2. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

  3. [JavaEE] IBM - Spring 系列: Spring 框架简介

    Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.develop ...

  4. Spring 系列: Spring 框架简介

    Spring AOP 和 IOC 容器入门(转载) 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.dev ...

  5. 【Spring】Spring系列7之Spring整合MVC框架

    7.Spring整合MVC框架 7.1.web环境中使用Spring 7.2.整合MVC框架 目标:使用Spring管理MVC的Action.Controller 最佳实践参考:http://www. ...

  6. 【RabbitMQ系列】 Spring mvc整合RabbitMQ

    一.linux下安装rabbitmq 1.安装erlang环境 wget http://erlang.org/download/otp_src_18.2.1.tar.gz tar xvfz otp_s ...

  7. SSM 三大框架系列:Spring 5 + Spring MVC 5 + MyBatis 3.5 整合(附源码)

    之前整理了一下新版本的 SSM 三大框架,这篇文章是关于它的整合过程和项目源码,版本号分别为:Spring 5.2.2.RELEASE.SpringMVC 5.2.2.RELEASE.MyBatis ...

  8. Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总

    Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...

  9. Java框架搭建-Maven、Mybatis、Spring MVC整合搭建

    1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...

随机推荐

  1. thinkphp5源码解析(2)控制器

    入口文件index.php: // 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR ...

  2. 【编程笔记】Unity3D语言的类型系统--C#的类型系统

    几乎所有的编程语言都有自己的类型系统. 而编程语言更是常常按照其类型系统而被分为强类型语言/弱类型语言.安全类型语言/不安全类型语言.静态类型语言/动态类型语言等. 而C#的类型系统是静态.安全,并且 ...

  3. BZOJ1001 狼抓兔子

    最小割 代码 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) m ...

  4. [BZOJ1008] [HNOI2008] 越狱 (数学)

    Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 In ...

  5. Java集合中迭代器的常用用法

    该例子展示了一个Java集合中迭代器的常用用法public class LinkedListTest { public static void main(String[] args) { List&l ...

  6. Angular和Vue.js 深度对比

    Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已有许多开发人员开始使用 Vue ...

  7. iOS逆向工程,(狗神)沙梓社大咖免费技术分享。

    序言 简介:本文针对于广大iOS开发者,作为一名开发者,仅仅专注于一门语言可能已经不适用现在的市场需求,曾经因高薪和需求量巨大,而火爆一时的移动端开发者(Android,ios),如今的路却是不再那么 ...

  8. 8Manage:物流CRM,深度挖掘快递企业下一站蓝海!

    [导读]网购的普及加快了快递物流服务在中国的发展,而物流行业也开始展露出自身巨大的发展潜力和进步空间.其中,作为物流行业根本核心的物流客户关系管理开始引起了管理者的注意,如何升级用户物流服务体验,把握 ...

  9. javascript从数组中删除一个元素

    Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.sp ...

  10. WPF-悬浮窗(类似于360)

    boss要求开发一个类似于360的悬浮窗,如下图所示: 目前采用的是wpf做的客户端,之前有个winform的项目,我参考了下,完成了wpf版的悬浮窗. Height=" WindowSta ...