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 "
* <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
* <task:scheduler id="qbScheduler" pool-size="10"/
* ChangeStateTask.doJob()<BR>
* <P>Author : DingYinLong </P>
* <P>Date : 2014年7月28日 </P>
*/
@Scheduled(cron = "0 0 * * * ?")
public void doJob(){
this.contractServiceImpl.executeStateChange();
}
/**
* 固定每分钟运行一次
* ChangeStateTask.doJob1()<BR>
* <P>Author : DingYinLong </P>
* <P>Date : 2014年8月1日 </P>
*/
@Scheduled(fixedRate = 60*1000)
public void doJob1(){
System.out.println(new Date() + "-----------------doJob1");
}
/**
* 上次任务结束后一分钟后再次运行
* ChangeStateTask.doJob2()<BR>
* <P>Author : DingYinLong </P>
* <P>Date : 2014年8月1日 </P>
*/
@Scheduled(fixedDelay = 60*1000)
public void doJob2(){
System.out.println(new Date() + "-----------------doJob2");
}
}

applicationContext.xml配置文件:

<?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:context="http://www.springframework.org/schema/context"
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.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd ">
<!-- 扫描包基础文件夹 -->
<context:component-scan base-package="com.inth" />
<!-- 识别@Scheduled注解 -->
<task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
<task:scheduler id="qbScheduler" pool-size="10"/>
</beans>

注意事项:

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配置:

<?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:context="http://www.springframework.org/schema/context"
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.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd ">
<!-- 扫描包基础文件夹 -->
<context:component-scan base-package="com.inth" />
<bean name="taskJob" class="com.inth.product.web.task.ChangeStateTask"></bean>
<task:scheduled-tasks>
<task:scheduled ref="taskJob" method="doJob" cron="0/5 * * * * ? "/>
<task:scheduled ref="taskJob" method="doJob1" fixed-rate="5000"/>
<task:scheduled ref="taskJob" method="doJob2" fixed-delay="5000"/>
</task:scheduled-tasks>
</beans>

附: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触发 

特殊字符 意义 

* 表示全部值。 

?

表示未说明的值,即不关心它为何值。 

- 表示一个指定的范围; 

, 表示附加一个可能值; 

/ 符号前表示開始时间,符号的每个增量后值;

版权声明:本文博主原创文章。博客,未经同意不得转载。

spring常规任务(轻便易)的更多相关文章

  1. spring注解和xml方式区别详解

    一.spring常规方式. 在使用注释配置之前,先来回顾一下传统上是如何配置 Bean 并完成 Bean 之间依赖关系的建立.下面是 3 个类,它们分别是 Office.Car 和 Boss,这 3 ...

  2. Spring实战1:Spring初探

    主要内容 Spring的使命--简化Java开发 Spring容器 Spring的整体架构 Spring的新发展 现在的Java程序员赶上了好时候.在将近20年的历史中,Java的发展历经沉浮.尽管有 ...

  3. spring mvc 基于注解的使用总结

    本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...

  4. 使用XFire+Spring构建Web Service(一)——helloWorld篇

    转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...

  5. spring mvc 经典总结

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  6. 使用XFire+Spring构建Web Service

    XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目 ...

  7. 使用 Spring 2.5 基于注解驱动的 Spring MVC

    http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/ 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sp ...

  8. 使用 Spring 2.5 基于注解驱动的 Spring MVC--转

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  9. 想要快速上手 Spring Boot?看这些教程就足够了!

    1.项目名称:分布式敏捷开发系统架构 项目简介:基于 Spring + SpringMVC + Mybatis 分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录).内容管理. ...

随机推荐

  1. Beijing seminar: China shadow banking

    Beijing seminar: China shadow banking-张化桥-财新博客-新世纪的常识传播者-财新网 Beijing seminar: China shadow banking

  2. Amazon S3数据一致性模型

    左右Amazon S3有两种类型的数据的一致性模型的: 最后,一致性和读一致性. 有下面几种行为: 1 写一个新的object,然后開始读它.直到全部的变化都传播完(副本),你才干读到它,否则就是ke ...

  3. java中由类名和方法名字符串实现其调用【反射机制】

    js里通过eval()函数,在知道某个方法名是可以实现调用该方法,那么在java里边又怎么实现的呢? java里边是通过反射机制来实现,代码如下: import java.lang.reflect.M ...

  4. vmware无法链接U盘:vm-->removeable devices.

    vmware无法链接U盘:vm-->removeable devices.

  5. Cocos2d-X研究之v3.x瓦片地图具体解释

    在游戏开发过程中,我们会遇到超过屏幕大小的地图,比如即时战略游戏,使得玩家能够在地图中滚动游戏画面.这类游戏一般会有丰富的背景元素,假设直接使用背景图切换的方式,须要为每一个不同的场景准备一张背景图, ...

  6. C++ Primer笔记10_运算符重载_赋值运算符_进入/输出操作符

    1.颂值运营商 首先来福值运算符引入后面要说的运算符重载.上一节说了构造函数.拷贝构造函数:一个类要想进行更好的控制.须要定义自己的构造函数.拷贝构造函数.析构函数.当然,还有赋值运算符.常说的三大函 ...

  7. UML用例图总结(转)

    用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. [用途]:帮助开发团队以一种可视化的方式理解系统的功能需求. 用例图所包含的元素如下: 1. ...

  8. UVa 11408 - Count DePrimes

    题目:一个数的素因子的和假设也是素数就叫做DePrimes,统计给定区间内的DePrimes. 分析:数论.本题使用用一种素数的筛法,欧拉筛法,也加线性筛法. 这样的方法,每次删选分两种情况:1.素因 ...

  9. 通常编译亲测56Y国际象棋源代码,精仿56Y国际象棋完整的源代码下载!

    今天公布亲测通常应编译56Y国际象棋源代码,精仿56Y牌源代码.喜欢的能够拿去研究.论坛资源太多.我们会把好的资源都公布出来,同一时候欢迎很多其它的程序猿增加我们! 增加我们的共同学习交流!     ...

  10. 使用dom4j创建和解析xml

    之前工作中用到了,相信写java的都会碰到xml,这里写了两个方法,创建和解析xml,废话不多说,直接上代码 package xml; import java.io.File; import java ...