1. 文件配置
<!-- 自动扫描(自动注入) -->
<context:component-scan base-package="com.**.**.timer" />
<!-- 定时任务相关配置 -->
<task:executor id="executor" pool-size="10"/>
<task:scheduler id="scheduler" pool-size="10"/>
<task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/>
3. 方法实现:
有两种使用方式:
1). 使用cron表达式
@Component
public class testTimer {
/**
* 每天凌晨12点开始到1点之间每15分钟执行一次
*/
@Scheduled(cron = "0 0/15 0 * * ?")
public void testTask() {
System.out.println("Scheduled time at: " + new Date());
}
}
2). 如果需要以固定速率执行,只要将注解中指定的属性名称改成fixedRate即可,例如固定速率5s来调用一次执行可使用@Scheduled(fixedDelay = 5000)。
3. corn参数解释:
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触发