Spring Task原理及使用

参考文章:
https://blog.csdn.net/u011116672/article/details/52517247
https://blog.csdn.net/lucky_ly/article/details/78726307

Spring Task的作用是处理定时任务。Spring中为定时任务提供TaskExecutor,TaskScheduler两个接口。

TaskExecutor继承了jdk的Executor:

public interface TaskExecutor extends Executor {
    void execute(Runnable var1);
}

这意味着他就是一个execute。

TaskScheduler提供定时器支持,即定时滴执行任务:

scheduler.schedule(task, new CronTrigger("30 * * * * ?"));

通过上面的方法,传入一个Rannable任务,Trigger触发器,就可以定时滴执行任务了,具体应用了cron表达式。

在spring 4.x中已经不支持7个参数的cronin表达式了,要求必须是6个参数(具体哪个参数后面会说)。cron表达式的格式如下:

{秒} {分} {时} {日期(具体哪天)} {月} {星期}
1
秒:必填项,允许的值范围是0-59,支持的特殊符号包括
, - * /,,表示特定的某一秒才会触发任务,-表示一段时间内会触发任务,*表示每一秒都会触发,/表示从哪一个时刻开始,每隔多长时间触发一次任务。
分:必填项,允许的值范围是0-59,支持的特殊符号和秒一样,含义类推
时:必填项,允许的值范围是0-23,支持的特殊符号和秒一样,含义类推
日期:必填项,允许的值范围是1-31,支持的特殊符号相比秒多了?,表示与{星期}互斥,即意味着若明确指定{星期}触发,则表示{日期}无意义,以免引起冲突和混乱。
月:必填项,允许的值范围是1-12(JAN-DEC),支持的特殊符号与秒一样,含义类推
星期:必填项,允许值范围是1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六,支持的符号相比秒多了?,表达的含义是与{日期}互斥,即意味着若明确指定{日期}触发,则表示{星期}无意义。

Spring Task原理及使用_第1张图片

通常而言,可以使用xml配合注解开发,以及注解开发两种。
具体做法为:
1.引入pom文件

        
            org.springframework
            spring-web
            4.3.9.RELEASE
        
        
            org.springframework
            spring-context
            4.3.9.RELEASE
        
        
            org.springframework
            spring-beans
            4.3.9.RELEASE
        
        
            org.springframework
            spring-context-support
            4.3.9.RELEASE
        

2.添加定时执行的任务



       
           
     

第二种方式,主要基于注解

package com.springTask;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.config.TaskExecutorFactoryBean;
import org.springframework.stereotype.Component;

@Component
public class TaskTest {

    @Scheduled(cron="* * * * * ?")
    public void execute(){
        System.out.println("let's go on " + new SimpleDateFormat().format(new Date()).toString());
    }


}

xml配置文件:

    
    
     

第三种方式,基于注解:

任务类上 @EnableScheduling 即可。

xml配置文件:

    
    

你可能感兴趣的:(spring)