1.spring-config.xml中的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context ="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!--自动扫描器-->
<context:component-scan base-package="com.apesource"/>
<!--任务注解驱动:@Scheduled注解所标记的任务方法,按照预设时间规则来调度执行-->
<task:annotation-driven/>
</beans>
2.组件的设置。
@Component
public class SendSmsTask {
private List<String> list =Arrays.asList("123456789","+++++++++","---------","asdfrvgtb","=========");
private static int count = 0;
@Scheduled(cron = "3/7 * 14 12 8 ?")
public void sendphonenamber(){
System.out.println(list.get(count++));
if(count==list.size()){
count = 0;
}
}
}
3.@Scheduled注解中的规则:
- @Scheduled(cron = "秒 分 时 日 月 周")之间用空格隔开
- '?' 表示占位符
- ' * ' 表示每,比如:"* 56 14 12 8 ?" 表示8月12日14时56分的每一秒钟都进行一次任务调度
- '-' 表示区间,比如:"14-34 56 14 12 8 ?"表示8月12日14时56分的14秒到34秒每一秒钟都执行一次。
- ',' 表示列表值,比如:"4,14,24,34,44,54 56 14 12 8 ?"表示8月12日14时56分的第4秒,第14秒,第24秒,第34秒,第44秒,第54秒。执行一次
- '/' 表示相隔,比如:"4/7 56 14 12 8 ?"表示8月12日14时56分4秒开始每7秒执行一次调度
- 其他,比如:"0 0 0 L * ?" 表示每月最后一天的0点0分0秒执行一次调度。