首页 > 代码库 > Spring @Scheduled关键字
Spring @Scheduled关键字
备注:本示例中我们使用的是spring 4.2.5版本。
在spring的上下文文件中修改标签:
增加Xmlns标签:xmlns:task=http://www.springframework.org/schema/task
修改xsi:schemaLocation标签,增加内容如下:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.2.xsd
增加任务扫描:
<task:annotation-driven/>
XML如下:
<?xml version="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:tx="ttp://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="ttp://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.2.xsd">
<context:component-scanbase-package="com" />
<task:annotation-driven />
<context:annotation-config/>
</beans>
实现类使用注解@Component作为注释
Java实例:
@Component
public class Cron {
@Scheduled(cron= " 0 0 * * * ?")
publicvoid runTaskPerHour() {
System.out.println("每小时的0分0秒执行一次: "+ new Date());
}
@Scheduled(fixedRate= 5000)
publicvoid runTaskPerFiveSecond() {
System.out.println("立即执行,每5秒执行一次: "+ new Date());
}
@Scheduled(fixedRate= 5000, initialDelay = 10000)
publicvoid runTaskPerFiveSecondDelay() {
System.out.println("延迟10秒执行,每5秒执行一次: "+ new Date());
}
}
下方参考ITEYE
Cron介绍:
一个cron表达式有至少6个有空格分隔的时间元素。
按顺序依次为
1.秒(0~59)
2.分钟(0~59)
3.小时(0~23)
4.天(月)(0~31,但是你需要考虑你月的天数)
5.月(0~11)
6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.
"0 0 10,14,16 * * ?" 每天上午10点,下午2点,4点
"0 0/30 9-17 * * ?" 朝九晚五工作时间内每半小时
"0 0 12 ? * WED" 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午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触发
Spring @Scheduled关键字