直接上干货.
spring定时任务的注解实现方式
一.在applicationContext-service.xml文件中添加配置,支持定时任务的注解实现
1:添加命名空间
beans中添加
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation中添加
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd"
2.添加配置
<task:annotation-driven scheduler="scheduler"/>//启用注解驱动定时任务
<task:scheduler id="scheduler" pool-size="10" />//配置定时任务线程池
注:spring默认为单线程,推荐配置线程池,若不配置多任务下会有问题
二.以上配置完成,后续无需修改配置文件
1.代码上添加两注解即可
/**
* spring定时任务测试业务层类
* @author Administrator
*
*/
@Component("taskJob")
public class Test {
@Scheduled(fixedRate=5000)
public void demo1(){
System.out.println("定时任务自动触发,案例1");
}
@Scheduled(fixedRate=3000)
public void demo2(){
System.out.println("定时任务自动触发,案例2");
}
@Scheduled(fixedRate = 2000)
public void demo3(){
System.out.println("定时任务自动触发,案例3");
}
}
1.再类上添加注解 @Component(“taskJob”)
2.再需要开启定时任务的方法上添加 @Scheduled
注: @Scheduled(fixedRate = 5000) //表示5秒执行一次
@Scheduled(cron = “0 0 1 * * ?”) //表示每天凌晨1点执行 (在线 cron 表示生成器: http://cron.qqe2.com)
配置文件方式:(这个方式准行)
<task:annotation-driven /> <!-- 定时器开关-->
<bean id="fetchNumberTask" class="定时任务类路径.FetchNumberTask"></bean>
<task:scheduled-tasks>
<!-- 配置定时任务执行时间 凌晨一点:执行0 0 1 * * ?-->
<task:scheduled ref="fetchNumberTask" method="fetchNumberTask" cron="0 */1 * * * ?" />
</task:scheduled-tasks>
|示例:
Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?