最近在开发javaEE项目时碰到了一个库存预警发邮件需求,所以想到了用定时任务来实现。从Spring 3.0以后spring 整合了定时任务 Spring Task,其实就等同于定时任务Quartz框架。(具体源码实现没有翻阅)
Spring Task 定时任务可以用注解和配置文件来实现
方式1:通过注解来实现Spring Task定时任务
步骤一:编写一个java类,定义定时任务方法
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
*
* 通过注解来启用Spring Task 事物(注意:只支持spring 3.0 以上的版本)
*
*/
@Component("stringTaskDemo")
public class StringTaskDemo1 {
@Scheduled(cron="0/2 * * * * ?")
public void test(){
System.out.println("Spring Task 3.0 以后的特性 集成了定时任务机制!");
}
}
步骤二:在Spring配置文件(applicationContext.xml)中开启Spring自动扫描并开启识别定时任务注解@Scheduled
启动项目就能看到调用了定时任务方法
方式二 通过配置文件的方式来实现Spring Task定时任务
步骤一:编写一个java类,定义定时任务方法
/**
* 通过配置文件的方式来启用Spring Task定时任务
* @author admin
*
*/
public class StringTaskDemo2 {
public void test(){
System.out.println("通过配置文件的方式来启用定时任务!");
}
}
注意:如要在配置文件中出现提示需要引入 xmlns:task="http://www.springframework.org/schema/task"
启动项目。
Spring Task 任务调度参数 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触发