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. java多线程控制台聊天室(转)

    用java多线程实现一个控制台聊天室,呵呵,好玩! 聊天室服务器端 package tf.thread; import java.io.BufferedReader; import java.io.I ...

  2. 登录oracle时,scott is locked (帐户被锁定) 的解决方法

    登录Oracle时,用scott/tiger  通常此时会报一个错误: scott is locked (帐户被锁定) 现在就要用超级用户system将scott帐户进行解锁. cmd->sql ...

  3. 从mina中学习超时程序编写

    从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...

  4. RabbitMq消息序列化简述

    涉及网络传输的应用.序列化不可避免. 发送端以某种规则将消息转成byte数组进行发送. 接收端则以约定的规则进行byte[]数组的解析. 序列化的选择能够是jdk序列化,hessian,jackson ...

  5. Mysql加入用户时的错误问题

    比如:加入用户 insert into mysql.user(Host,User,Password) values("localhost","test",pas ...

  6. The Swift Programming Language 中国版

    iSwifting社会的 Swift 兴趣交流群:303868520 iOS 微信公众账号:iOSDevTip Swift 微信公众账号:SwiftDev iSwifting社区 假设你认为这个项目不 ...

  7. 在阿里云上布置git server

    前言 东莞,晴,26至32度. 一直以为都是使用SVN Server作为私用的版本号控制器.随着Git的大行其道.近期由于项目须要,也试着在阿里云上部署Git Server.这里由于团队人员少.我採用 ...

  8. hdu1754(splay)

    给n个数,有两种操作    Q a b   询问区间[a,b]的最大值,  U a b 将第a个数的值改成b splay树的中序遍历是我们所维护的序列.如果要询问区间[a,b]的最大值,那么只要将第a ...

  9. 黄聪:Microsoft Enterprise Library 5.0 系列教程(八) Unity Dependency Injection and Interception

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(八) Unity Dependency Injection and Interception 依赖注入容器Uni ...

  10. Windows Phone开发(44):推送通知第二集——磁贴通知

    原文:Windows Phone开发(44):推送通知第二集--磁贴通知 前面我们说了第一个类型--Toast通知,这玩意儿不知大家是不是觉得很新鲜,以前玩.NET编程应该没接触过吧? 其实这东西绝对 ...