博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring定时任务(方便轻巧)
阅读量:6818 次
发布时间:2019-06-26

本文共 3274 字,大约阅读时间需要 10 分钟。

hot3.png

spring提供了定时任务功能,不需要第三方jar包支持,spring足以。

package com.inth.product.web.task;import java.util.Date;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;import com.inth.product.service.impl.ContractServiceImpl;@Component("changeStateTask")public class ChangeStateTask{		@Autowired	private ContractServiceImpl contractServiceImpl;	/**	 * 定时更改合同状态	 * 0 0 * * * ?  表示每次秒和分为0时触发一次(每小时一次)	 * "@Scheduled"时spring提供的定时任务标签	 * 需要在applicationContext.xml中添加	 * 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.2.xsd "	 * 	
    *  
 * 

Author : DingYinLong 

    * 

Date : 2014年7月28日 

 */ @Scheduled(cron = "0 0 * * * ?") public void doJob(){ this.contractServiceImpl.executeStateChange(); } /**  * 固定每分钟执行一次  * ChangeStateTask.doJob1()
 * 

Author : DingYinLong 

    * 

Date : 2014年8月1日 

 */ @Scheduled(fixedRate = 60*1000) public void doJob1(){ System.out.println(new Date() + "-----------------doJob1"); } /**  * 上次任务结束后一分钟后再次执行  * ChangeStateTask.doJob2()
 * 

Author : DingYinLong 

    * 

Date : 2014年8月1日 

 */ @Scheduled(fixedDelay = 60*1000) public void doJob2(){ System.out.println(new Date() + "-----------------doJob2"); }}

applicationContext.xml配置文件:

    
    
      
 

注意事项:

1,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.2.xsd "

2,fixedRate和fixedDelay的区别写在注释上了。

以上情况不基于注解纯配置如下:

代码:

package com.inth.product.web.task;import java.util.Date;import com.inth.product.service.impl.ContractServiceImpl;public class ChangeStateTask{	private ContractServiceImpl contractServiceImpl;	public void doJob(){		System.out.println(new Date() + "-----------------doJob");//		this.contractServiceImpl.executeStateChange();	}	public void doJob1(){		System.out.println(new Date() + "-----------------doJob1");	}	public void doJob2(){		System.out.println(new Date() + "-----------------doJob2");	}}

applicationContext.xml配置:

    
    
    
           
          
          
   

附:cron表达式配置说明 

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

秒 0-59 , - * / 
分 0-59 , - * / 
小时 0-23 , - * / 
日期 1-31 , - * ? / L W C 
月份 1-12 或者 JAN-DEC , - * / 
星期 1-7 或者 SUN-SAT , - * ? / L C # 
年(可选) 留空, 1970-2099 , - * / 
表达式 意义 
"0 0 12 * * ?" 每天中午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期间的每1分钟触发 
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
"0 15 10 15 * ?" 每月15日上午10:15触发 
"0 15 10 L * ?" 每月最后一日的上午10:15触发 
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 
特殊字符 意义 
* 表示所有值; 
? 表示未说明的值,即不关心它为何值; 
- 表示一个指定的范围; 
, 表示附加一个可能值; 
/ 符号前表示开始时间,符号后表示每次递增的值; 

转载于:https://my.oschina.net/sniperLi/blog/647123

你可能感兴趣的文章
关于域证书的发布CA和CRL的内容 (Windows 2008 Server R2 SP1)
查看>>
软件测试英语专业词汇汇总
查看>>
Java实现word文档在线预览,读取office(word,excel,ppt)文件
查看>>
python笔记(五)装饰器函数
查看>>
Permutations II
查看>>
Super Ugly Number
查看>>
(转载)UTF-8和GBK的编码方式的部分知识:重要
查看>>
convert RGB image to a 2x2 [GR;BG] Bayer pattern
查看>>
机器学习 -- 机器学习是什么?
查看>>
三台机器之间ssh互信配置
查看>>
mysql8.0.16二进制安装
查看>>
第一次课后作业
查看>>
ZooKeeper学习第三期---Zookeeper命令操作
查看>>
MFC MDI 窗口函数执行顺序
查看>>
2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
查看>>
[代码]ural 1913 Titan Ruins: Old Generators Are Fine Too
查看>>
[转载]C++的顺序点(sequence point)和副作用(side effect)
查看>>
javascript 插入DOM节点
查看>>
【原】npm 常用命令详解
查看>>
Less学习
查看>>