• Spring boot中的定时任务(计划任务)


        从Spring3.1开始,计划任务在Spring中实现变得异常的简单。首先通过配置类注解@EnableScheduling来开启对计划任务的支持,然后再要执行的计划任务的方法上注释@Scheduled,声明这是一个计划任务。

        Spring通过@Scheduled支持多种类型的计划任务,包含cron、fixDelay、fixRate等。

        写个栗子来看看:

        1)定时任务执行类:

        

     1 package com.wj.test;
     2 
     3 import org.springframework.scheduling.annotation.Scheduled;
     4 import org.springframework.stereotype.Service;
     5 
     6 import java.text.SimpleDateFormat;
     7 import java.util.Date;
     8 
     9 /**
    10  * Created by wj on 2017/9/6.
    11  */
    12 @Service
    13 public class ScheduledTaskService {
    14     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    15 
    16     //每个2s执行一次任务
    17     @Scheduled(fixedRate = 2000)
    18     public void run(){
    19         System.out.println(dateFormat.format(new Date()) + " | " + "每隔2s执行一次任务");
    20     }
    21 
    22 //    每天15点29分执行该任务
    23     @Scheduled(cron = "0 29 15 ? * *")
    24     public void run1()
    25     {
    26         System.out.println(dateFormat.format(new Date()) + " | " + "每天在指定时间执行任务");
    27     }
    28 }

    代码解释:

           (1)通过@Scheduled声明该方法是计划任务,使用fixedRate属性每隔固定时间执行。

           (2)使用cron属性可按照指定时间执行任务;cron是UNIX和Linux系统下的定时任务。

    2)配置类:

     1 package com.wj.test;
     2 
     3 import org.springframework.context.annotation.ComponentScan;
     4 import org.springframework.context.annotation.Configuration;
     5 import org.springframework.scheduling.annotation.EnableScheduling;
     6 
     7 /**
     8  * Created by wj on 2017/9/6.
     9  */
    10 @Configuration
    11 @ComponentScan("com.wj.test")
    12 @EnableScheduling
    13 public class TaskSchedulerConfig {
    14 
    15 }

    通过@EnableScheduling注解开启对计划任务的支持。

    3)运行:

     1 package com.wj.test;
     2 
     3 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
     4 
     5 /**
     6  * Created by wj on 2017/9/6.
     7  */
     8 public class TestMain {
     9     public static void main(String[] args){
    10         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TaskSchedulerConfig.class);
    11     }
    12 }

    结果如下图所示:

        

    若在spring boot中使用@Scheduled定时任务,那么不需要写配置类,只需要在启动类application类中加入注解@EnableScheduling即可。

  • 相关阅读:
    全局配置策略
    RESTful api介绍
    AJAX
    django cookie session 自定义分页
    mysql 索引优化
    yii2 response响应配置
    Django中的信号
    django orm相关操作
    django orm介绍以及字段和参数
    django form和ModelForm组件
  • 原文地址:https://www.cnblogs.com/wj0816/p/7485094.html
Copyright © 2020-2023  润新知