转载自--http://blog.csdn.net/weiwangchao_/article/details/49612417

Spring-Task

上节介绍了在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种

形式,下面将分别介绍这两种方式。

第一种:配置文件方式

第一步:编写作业类

即普通的pojo,如下:

  1. import org.springframework.stereotype.Service;
  2. @Service
  3. public class TaskJob {
  4. public void job1() {
  5. System.out.println(“任务进行中。。。”);
  6. }
  7. }

 第二步:在spring配置文件头中添加命名空间及描述

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:task="http://www.springframework.org/schema/task"
  3. 。。。。。。
  4. xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

 第三步:spring配置文件中设置具体的任务

  1. <task:scheduled-tasks>
  2. <task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/>
  3. </task:scheduled-tasks>
  4. <context:component-scan base-package=" com.gy.mytask " />

说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式,具体写法这里不介绍了,详情见上篇文章附录。

<context:component-scan base-package="com.gy.mytask" />这个配置不消多说了,spring扫描注解用的。

到这里配置就完成了,是不是很简单。

第二种:使用注解形式

也许我们不想每写一个任务类还要在xml文件中配置下,我们可以使用注解@Scheduled,我们看看源文件中该注解的定义:

Java代码  
  1. @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. public @interface Scheduled
  5. {
  6. public abstract String cron();
  7. public abstract long fixedDelay();
  8. public abstract long fixedRate();
  9. }

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

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

Java代码  
  1. import org.springframework.scheduling.annotation.Scheduled;
  2. import org.springframework.stereotype.Component;
  3. @Component(“taskJob”)
  4. public class TaskJob {
  5. @Scheduled(cron = "0 0 3 * * ?")
  6. public void job1() {
  7. System.out.println(“任务进行中。。。”);
  8. }
  9. }

 第二步:添加task相关的配置:

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:task="http://www.springframework.org/schema/task"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  13. http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
  14. default-lazy-init="false">
  15. <context:annotation-config />
  16. <!—spring扫描注解的配置   -->
  17. <context:component-scan base-package="com.gy.mytask" />
  18. <!—开启这个配置,spring才能识别@Scheduled注解   -->
  19. <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
  20. <task:scheduler id="qbScheduler" pool-size="10"/>

说明:理论上只需要加上<task:annotation-driven />这句配置就可以了,这些参数都不是必须的。

Ok配置完毕,当然spring task还有很多参数,我就不一一解释了,具体参考xsd文档http://www.springframework.org/schema/task/spring-task-3.0.xsd。

附录:

cronExpression的配置说明,具体使用以及参数请百度google

字段   允许值   允许的特殊字符

秒    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/3 * * * * ?" 每3秒执行一次

"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触发 

String task用法相关推荐

  1. C语言task的用法,C# Task 用法

    C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...

  2. substring java_Java String.substring()用法

    首页 > 基础教程 > 常用类 > 常用 String类 Java String.substring()用法 substring() 方法返回字符串的子字符串. 语法 public ...

  3. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  4. Spring Boot教程(二十):Spring Boot使用String Task定时任务

    一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...

  5. 用std::string::compare()用法

    c++系列文章目录 c++处理文本相对于python等脚本语言还是挺麻烦的,往往需要和fstream.fstream.string.一起配合使用才能完全把文本解析出来.其实,string并不是一个单独 ...

  6. C++中std::string::find_last_of用法

    早上本来还看代码时本来还迷迷糊糊,结果被find_last_of一下给震醒了,std::string 使用了这么多年,今天才发现find_last_of只是用来查找字符的,多年来一直以为它可用来查找字 ...

  7. 【贪玩巴斯】带你学:C++ tips ——知识点:string::npos 用法详细解析 , 看这一篇就够了 2021年12月21日

    [贪玩巴斯]带你学:C++ tips --知识点:string::npos 用法详细解析 !!! 一.定义 二.使用 1.如果作为一个返回值(return value)表示没有找到匹配项 2.但是st ...

  8. 最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月16日)

    <Java每日练习题及题解>系列目录 1.有限条件求和_Java每日练习题及题解(11月15日) 2.最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月 ...

  9. C# Task 用法

    C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...

最新文章

  1. http中的请求头各部分都是什么意思_30张图讲解HTTP,不信你还不会
  2. python中readlines_python中read() readline()以及readlines()用法
  3. excel保存超过15位数据不变科学计数法的方法
  4. #1130 - Host 'localhost' is not allowed to connect to this MySQL server
  5. .net项目进不去后台解决
  6. python下载-python下载及安装
  7. python语言的特点强制可读_python程序语言设计第二讲(笔记)
  8. 转:awakeFromNib/loadView/viewDidLoad总结
  9. python中文相似度_python比较两个文本的相似性
  10. Quartus II 13.1入门级使用方法 -仿真篇,适用于小白
  11. JS调用google DEMO朗读
  12. 干货分享:5年SEO经验得来的101条总结
  13. 5g消息服务器,5G消息开启信息服务新篇章
  14. 崩坏3服务器修改水晶数量,崩坏3半年不氪金能攒多少水晶 半积年攒水晶数量详情...
  15. 拒酒词,社交必备!!!
  16. docker部署html页面,Docker 案例: 在容器中部署静态网站
  17. Unity的AB包系统使用概论
  18. Codeforces1509.B. TMT Document
  19. 【禅道】禅道开源版搭建教程
  20. [19保研]中国科学院上海高等研究院“梦筑高研” 2018年大学生暑假夏令营活动通知...

热门文章

  1. Application.java启动项位置不对报错
  2. Java项目:考试在线报名管理系统(java+SSM+HTML+JS+jsp+mysql)
  3. C语言——数组指针篇
  4. excel 2010 指定x轴y轴数据 画折线图
  5. java 正切_Java tan()方法
  6. cesium 鼠标点击pick与drillPick的区别
  7. 5个常用的CMD命令盘点
  8. 自动生成统计报表功能
  9. fragment 淡入淡出_Android ViewPager随着不同的动画,如放大,淡入淡出等
  10. NIB 和 XIB 的区别