Spring 3.0以后版本的定时任务(使用spring自带的)

Spring3.0以后自带自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种

如下,配置文件方式

项目目录结构以及所需jar包如下:

 

 1.首先确定需要定时执行的java方法TaskScaner的execScanTask方法

package com.bjsxt.cronjob;

public class TaskScaner {
	
	public void execScanTask(){
		System.out.println("定时任务....");	
	}
}

 2.配置spring的配置文件beans.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:task="http://www.springframework.org/schema/task"  
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/task    
           http://www.springframework.org/schema/task/spring-task-3.0.xsd">
     <!-- 
                   在beans中这里加入了  
	    xmlns:task="http://www.springframework.org/schema/task"  
	    http://www.springframework.org/schema/task    
	    http://www.springframework.org/schema/task/spring-task-3.0.xsd     
      -->
     <task:annotation-driven /> <!-- 定时器开关--> 
	 <bean id="taskScaner" class="com.bjsxt.cronjob.TaskScaner"></bean>  
  
      <task:scheduled-tasks>  
      <!--   
             这里表示的是从第五秒开始 ,每三秒执行一次 (而不是 三分之五 秒执行一次哦~~)   
      -->  
        <task:scheduled ref="taskScaner" method="execScanTask" cron="5/3 * * * * ?" />  
    </task:scheduled-tasks>  

</beans>

 3.编写定时任务测试类CronJobTest.java

package com.bjsxt.cronjob;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 定时任务测试
 * @author gaoweigang
 *
 */
public class CronJobTest {
	public static void main(String[] args) throws Exception {
		String[] config = {"beans.xml"};
		ApplicationContext act = new ClassPathXmlApplicationContext(config);
		
	}
}
cron表达式:-是用空格分开的时间字段,不使用年。
 
*(秒0-59)    *(分钟0-59)   *(小时0-23)  *(日期1-31)   *(月份1-12或是JAN-DEC)  *(星期1-7或是SUN-SAT)  
 
示例:
*/5  * * * * 6-7  :: 每个周6到周日,每隔5秒钟执行一次。
 
*/1 * * 7-9 1-2 1-7 :: 1月到2月中的7号到9号,且必须要满足周一到周日,每隔1秒钟执行一次。
 
*/1 * * 7-9 1,5 1-7  :: 注意里面的,(逗号),只有1月和5月的7到9号,且必须要满足周一到周日,每一秒钟执行一次。
 
*/1 17-59 * 7-9 1,5 1-7 :: 只解释17-59,是指从第17分钟到第59分钟,在指定的时间内,每一秒种执行一次
 
* 17-59 * 7-9 1,5 1-7   :: 此代码的功能与上面完全相同。如果不写秒即为每一秒执行一次。
 
59 19-23 * 7-9 1,5 1-7  :: 19分-23分的每59秒钟时只执行一次。
 
59 19,26 * 7-9 1,5 1-7  :: 注意里面的,(逗号),是指只有19分或是26分的56秒钟时执行一次。
 
* * 16-23 7-9 1,5 1-7   :: 定义每天的16点到23点每一秒钟执行一次。
59 59 23 * * 1-5  :: 定义每周1到周5,晚上23:59:59秒只执行一次。这个相当用有。可以工作时间每天给用户发邮件。

annotation用法的可以参考原文。。。

原文:http://blog.csdn.net/yusimiao/article/details/25654899

猜你喜欢

转载自weigang-gao.iteye.com/blog/2228891
今日推荐