Spring-Task 定时任务

来源:互联网 发布:云计算的几种形式 编辑:程序博客网 时间:2024/04/30 09:13

最近项目中需要执行一些定时任务,比如订单两小时内未支付,需要邮件和短信通知用户付款,OA审批流程要定时向OA系统查询流程的结果等等,网上查了一些资料,实现方式还挺多,由于项目采用了spring框架,就挑选了其中最为简单的spring-task,下面就为大家介绍一下

1.编写作业类

package com.szkingdom.action;import java.text.SimpleDateFormat;import java.util.Date;public class Demo {public void callback(){System.out.println("进入了定时任务"+new SimpleDateFormat("yyyy-MM-dd H:m:s").format(new Date()));}}
2.在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">  
3.添加bean和设置对应的参数

<pre name="code" class="html"><!-- 依赖注入定时器类 --><bean id="insuranceTask" class="com.szkingdom.action.Demo" /><task:scheduled-tasks><!-- 定时查询数据库中的数据 --><task:scheduled ref="insuranceTask" method="callback" cron="0 0/30 9-17 * * ???"/></task:scheduled-tasks>

说明:cron配置的意思是每天早上九点到下午五点每半个小时执行一次

4. 常见的cron设置

"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触发 


更多的百度搜索cronExpression的配置





0 0