spring自带定时任务注解方式实现

直接上干货.
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 * * ?

你可能感兴趣的:(spring框架)