String task用法
转载自--http://blog.csdn.net/weiwangchao_/article/details/49612417
Spring-Task
上节介绍了在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种
形式,下面将分别介绍这两种方式。
第一种:配置文件方式
第一步:编写作业类
即普通的pojo,如下:
- import org.springframework.stereotype.Service;
- @Service
- public class TaskJob {
- public void job1() {
- System.out.println(“任务进行中。。。”);
- }
- }
第二步:在spring配置文件头中添加命名空间及描述
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:task="http://www.springframework.org/schema/task"
- 。。。。。。
- xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
第三步:spring配置文件中设置具体的任务
- <task:scheduled-tasks>
- <task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/>
- </task:scheduled-tasks>
- <context:component-scan base-package=" com.gy.mytask " />
说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式,具体写法这里不介绍了,详情见上篇文章附录。
<context:component-scan base-package="com.gy.mytask" />这个配置不消多说了,spring扫描注解用的。
到这里配置就完成了,是不是很简单。
第二种:使用注解形式
也许我们不想每写一个任务类还要在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(“任务进行中。。。”);
- }
- }
第二步:添加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:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:task="http://www.springframework.org/schema/task"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
- default-lazy-init="false">
- <context:annotation-config />
- <!—spring扫描注解的配置 -->
- <context:component-scan base-package="com.gy.mytask" />
- <!—开启这个配置,spring才能识别@Scheduled注解 -->
- <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
- <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用法相关推荐
- C语言task的用法,C# Task 用法
C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...
- substring java_Java String.substring()用法
首页 > 基础教程 > 常用类 > 常用 String类 Java String.substring()用法 substring() 方法返回字符串的子字符串. 语法 public ...
- STL中map和string, vector 用法详解
1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...
- Spring Boot教程(二十):Spring Boot使用String Task定时任务
一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...
- 用std::string::compare()用法
c++系列文章目录 c++处理文本相对于python等脚本语言还是挺麻烦的,往往需要和fstream.fstream.string.一起配合使用才能完全把文本解析出来.其实,string并不是一个单独 ...
- C++中std::string::find_last_of用法
早上本来还看代码时本来还迷迷糊糊,结果被find_last_of一下给震醒了,std::string 使用了这么多年,今天才发现find_last_of只是用来查找字符的,多年来一直以为它可用来查找字 ...
- 【贪玩巴斯】带你学:C++ tips ——知识点:string::npos 用法详细解析 , 看这一篇就够了 2021年12月21日
[贪玩巴斯]带你学:C++ tips --知识点:string::npos 用法详细解析 !!! 一.定义 二.使用 1.如果作为一个返回值(return value)表示没有找到匹配项 2.但是st ...
- 最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月16日)
<Java每日练习题及题解>系列目录 1.有限条件求和_Java每日练习题及题解(11月15日) 2.最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月 ...
- C# Task 用法
C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...
最新文章
- http中的请求头各部分都是什么意思_30张图讲解HTTP,不信你还不会
- python中readlines_python中read() readline()以及readlines()用法
- excel保存超过15位数据不变科学计数法的方法
- #1130 - Host 'localhost' is not allowed to connect to this MySQL server
- .net项目进不去后台解决
- python下载-python下载及安装
- python语言的特点强制可读_python程序语言设计第二讲(笔记)
- 转:awakeFromNib/loadView/viewDidLoad总结
- python中文相似度_python比较两个文本的相似性
- Quartus II 13.1入门级使用方法 -仿真篇,适用于小白
- JS调用google DEMO朗读
- 干货分享:5年SEO经验得来的101条总结
- 5g消息服务器,5G消息开启信息服务新篇章
- 崩坏3服务器修改水晶数量,崩坏3半年不氪金能攒多少水晶 半积年攒水晶数量详情...
- 拒酒词,社交必备!!!
- docker部署html页面,Docker 案例: 在容器中部署静态网站
- Unity的AB包系统使用概论
- Codeforces1509.B. TMT Document
- 【禅道】禅道开源版搭建教程
- [19保研]中国科学院上海高等研究院“梦筑高研” 2018年大学生暑假夏令营活动通知...
热门文章
- Application.java启动项位置不对报错
- Java项目:考试在线报名管理系统(java+SSM+HTML+JS+jsp+mysql)
- C语言——数组指针篇
- excel 2010 指定x轴y轴数据 画折线图
- java 正切_Java tan()方法
- cesium 鼠标点击pick与drillPick的区别
- 5个常用的CMD命令盘点
- 自动生成统计报表功能
- fragment 淡入淡出_Android ViewPager随着不同的动画,如放大,淡入淡出等
- NIB 和 XIB 的区别