spring boot 创建轻量级定时任务

Scheduled

SpringBoot配置定时任务可以直接使用自带的Scheduled,这相当于一个轻量级的Quartz,它可以让我们直接使用注解来完成定时任务的配置。

Scheduled调度时间设置说明

使用Scheduled设置任务调度时间有两种方式,一种为直接设置间隔毫秒数,一种为使用Cron表达式,见下面的代码:

//通过fixedRate属性,来设置每隔固定时间执行一次,fixedRate值的单位为毫秒,此例为每5秒执行1次
@Scheduled(fixedRate = 5000)
//通过cron属性,使用Cron表达式来设置执行时间,此例为每10秒执行1次 //在线Cron表达式生成器:http://cron.qqe2.com/ @Scheduled(cron="*/10 * * * * ?")

调度任务(定时任务)实现类

调度任务1

package Scheduler;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;

@Service
public class SchedulingTask1 {

    private Integer count=0;
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    //通过fixedRate属性,来设置上一次调度开始后再次调度的延时,fixedRate值的单位为毫秒,此例为每5秒执行1次
    @Scheduled(fixedRate = 5000)
    private void process(){
        //输出
        System.out.println(String.format("第%s次执行任务SchedulingTask1 时间:%s", (++count).toString(), dateFormat.format(new Date())));
    }
}

调度任务2

package Scheduler;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;

@Service
public class SchedulingTask2 {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    //通过cron属性,使用Cron表达式来设置执行时间,此例为每10秒执行1次
    @Scheduled(cron="*/10 * * * * ?")
    private void process(){
        //输出
        System.out.println(String.format("SchedulingTask2执行... 时间:%s", dateFormat.format(new Date())));
    }
}

也可以将SchedulingTask2类中的方法写在SchedulingTask1类中。

调度配置类

package Scheduler;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@ComponentScan("Scheduler")
@EnableScheduling //通过@EnableScheduling注解开启对计划任务的支持
public class SchedulerConfig {
}

启动类

package com.lgt.demo2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import Scheduler.SchedulerConfig;

@SpringBootApplication
public class Demo2Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo2Application.class, args);
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(SchedulerConfig.class);
    }

}

输出结果

第1次执行任务SchedulingTask1 时间:2019-04-15 13:41:33
第2次执行任务SchedulingTask1 时间:2019-04-15 13:41:38
SchedulingTask2执行... 时间:2019-04-15 13:41:40
第3次执行任务SchedulingTask1 时间:2019-04-15 13:41:43
第4次执行任务SchedulingTask1 时间:2019-04-15 13:41:48
SchedulingTask2执行... 时间:2019-04-15 13:41:50
第5次执行任务SchedulingTask1 时间:2019-04-15 13:41:53
第6次执行任务SchedulingTask1 时间:2019-04-15 13:41:58
SchedulingTask2执行... 时间:2019-04-15 13:42:00

 

 

 

 

 

 

 

 

 

 

 

 

 

SchedulingTask1 
上一篇:Spring Boot 中实现定时任务的两种方式


下一篇:vue-混入( mixin 更方便的组件功能复用方法)的使用