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

本文共 3275 字,大约阅读时间需要 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/lenglingx/blog/650564

你可能感兴趣的文章
selenium使用chrome抓取自动消失弹框的方法
查看>>
实现strStr()---简单
查看>>
只有PD号的调起
查看>>
返回一个整数数组中最大子数组的和
查看>>
leetcode(二)
查看>>
利用css实现居中的方法
查看>>
Spring + Hibernate 框架
查看>>
添加浏览器的用户样式表
查看>>
LigerUI学习笔记之布局篇 layout
查看>>
LeetCode题解(二)
查看>>
Mybatis通用Mapper
查看>>
文件磁盘命令(就该这么学6章内容)
查看>>
2016-207-19 随笔
查看>>
java的double类型如何精确到一位小数?
查看>>
看看国外的javascript题目,你能全部做对吗?
查看>>
ffmpeg 如何选择具有相同AVCodecID的编解码器 (AVCodec)
查看>>
真正解决 Windows 中 Chromium “缺少 Google API 密钥” 的问题
查看>>
Spring 之 AOP
查看>>
软件项目管理|期末复习(二)
查看>>
直接调用VS.net2005中的配置界面
查看>>