【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个)有空格分隔的时间元素
按顺序依次为:
- 秒(0~59)
- 分钟(0~59)
- 小时(0~23)
- 天(0~31)
- 月(0~11)
- 星期(1~7 SUN MON TUE WED THU FRI SAT)
- 年份(1970-2099)
【Spring系列】spring mvc整合任务调度的更多相关文章
- Spring 系列: Spring 框架简介 -7个部分
Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...
- Spring 系列: Spring 框架简介(转载)
Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...
- [JavaEE] IBM - Spring 系列: Spring 框架简介
Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.develop ...
- Spring 系列: Spring 框架简介
Spring AOP 和 IOC 容器入门(转载) 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级的.强壮的 J2EE 应用程序.dev ...
- 【Spring】Spring系列7之Spring整合MVC框架
7.Spring整合MVC框架 7.1.web环境中使用Spring 7.2.整合MVC框架 目标:使用Spring管理MVC的Action.Controller 最佳实践参考:http://www. ...
- 【RabbitMQ系列】 Spring mvc整合RabbitMQ
一.linux下安装rabbitmq 1.安装erlang环境 wget http://erlang.org/download/otp_src_18.2.1.tar.gz tar xvfz otp_s ...
- SSM 三大框架系列:Spring 5 + Spring MVC 5 + MyBatis 3.5 整合(附源码)
之前整理了一下新版本的 SSM 三大框架,这篇文章是关于它的整合过程和项目源码,版本号分别为:Spring 5.2.2.RELEASE.SpringMVC 5.2.2.RELEASE.MyBatis ...
- Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...
- Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...
随机推荐
- jQuery.isPlainObject()的作用
jQuery.isPlainObject()函数用于判断指定参数是否是一个纯粹的对象. 所谓"纯粹的对象",就是该对象是通过"{}"或"new Obj ...
- tomcat原理(二)
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:
- docker学习系列(一):docker 基础
一.简介 开发当中比较麻烦的问题在于软件配置,每个人的机械以及系统都不尽相同,程序需要运行在系统当中需要配置好相应的系统以及各种依赖的组件,但是很多时候由于各种软件依赖包的版本,系统兼容性问题会导致程 ...
- 在linux下,怎么去查看一个运行中的程序, 到底是占用了多少内存
1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...
- rabbitmq简单收发服务搭建
消息发送.接收简单代码示例 mq.xml //rabbitmq config spring.rabbitmq.host=ip:host spring.rabbitmq.username= spring ...
- 【CF235C】Cyclical Quest(后缀自动机)
[CF235C]Cyclical Quest(后缀自动机) 题面 洛谷 题解 大致翻译: 给定一个串 然后若干组询问 每次也给定一个串 这个串可以旋转(就是把最后一位丢到最前面这样子) 问这个串以及其 ...
- emacs配置
原配置 (global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C ...
- 【网络流24题22】最长k可重线段集问题
题面戳我 sol 千万!千万!不要理解错题意了!最长K可重,不是说线段最多K可重!你以为计算几何? 原文:使得在\(x\)轴上的任何一点\(p\),\(S\)中与直线\(x=p\)相交的开线段个数不超 ...
- 宿主机无法访问linux虚机中的网站
问题现象: Nginx服务已启动 80端口被nginx监听 宿主和linux虚机可相互ping通 Linux虚机可用curl访问网站 宿主无法用浏览器访问网站 排查: 1. 查看nginx的acce ...
- 原来你是这样的Websocket--抓包分析
之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录.订单消息推送.活动消息广播等功能.为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番.现在分享出来,希 ...