详解SpringBoot开发案例之整合定时任务(Scheduled)

下面就是详解SpringBoot开发案例之整合定时任务(Scheduled)的完整攻略。

一、前言

在我们的日常开发中,经常会有需要在指定的时间执行某些任务的需求。比如说定期产生统计报表、备份数据、扫描无效文件等等。在Java开发中,我们可以使用Java自带的Timer/TimerTask类或是Quartz等第三方框架实现定时执行任务。在Spring Boot中,使用定时任务非常简单,可以利用Spring自带的@Scheduled注解来实现。

二、整合定时任务(Scheduled)的操作步骤

1、创建Spring Boot项目

如果你还没有创建Spring Boot项目,可以参考以下操作:

  1. 在IDE中选择File -> New -> Project -> Spring Initializr。选择一个Maven/Gradle项目,填写名称、GroupId、ArtifactId等信息。

  2. 选择需要引入的依赖,这里我们需要勾选Spring Web和Spring Task依赖。

  3. 点击Finish,等待项目创建完成。

2、创建定时任务的方法

在Spring Boot中创建定时任务非常简单,只需要在方法上添加@Scheduled注解并设置相应的属性即可。

下面是这个注解的几个属性的含义:

  • cron:cron表达式,指定任务执行时间。

  • fixedDelay:按固定延迟时间执行任务,单位毫秒。

  • fixedDelayString:同fixedDelay,只是使用字符串形式。

  • fixedRate:按固定的频率执行任务,单位毫秒。

  • fixedRateString:同fixedRate,只是使用字符串形式。

  • initialDelay:初始延迟时间,单位毫秒。

  • initialDelayString:同initialDelay,只是使用字符串形式。

下面是一个简单的例子:

@Component
public class ScheduledTask {

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

    @Scheduled(fixedDelay = 5000)
    public void reportCurrentTime() {
        System.out.println("现在时间是:" + sdf.format(new Date()));
    }
}

上面的例子中,我们通过使用@Scheduled(fixedDelay = 5000)注解,每5秒钟输出一次当前时间。

3、测试定时任务的效果

我们可以使用Spring Boot自带的TaskExecutor和TaskScheduler对任务进行并发控制,TaskScheduler在执行任务时还可以支持断线重连和容错处理。

下面是一个简单的测试例子:

@RestController
public class TestController {

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

    @Autowired
    private AsyncRestTemplate asyncRestTemplate;

    @GetMapping("/test")
    public String test() throws InterruptedException, ExecutionException {

        ScheduledExecutorService executorService1 = Executors.newScheduledThreadPool(5);

        // 测试单次定时任务
        executorService1.schedule(() -> {
            System.out.println("single execution: " + sdf.format(new Date()));
        }, 5, TimeUnit.SECONDS);

        ScheduledExecutorService executorService2 = Executors.newScheduledThreadPool(5);

        // 测试间隔定时任务
        executorService2.scheduleAtFixedRate(() -> {
            System.out.println("fixed rate execution: " + sdf.format(new Date()));
        }, 2, 5, TimeUnit.SECONDS);

        ScheduledExecutorService executorService3 = Executors.newScheduledThreadPool(5);

        // 测试延时定时任务
        executorService3.scheduleWithFixedDelay(() -> {
            System.out.println("fixed delay execution: " + sdf.format(new Date()));
        }, 2, 5, TimeUnit.SECONDS);

        return "OK";
    }
}

上述测试例子中,我们使用了Spring Boot自带的TaskExecutor和TaskScheduler来测试我们的定时任务。

示例中的第一个定时任务是单次定时执行任务,第二个是间隔定时任务,第三个是延时定时任务。

三、结语

上面就是详解SpringBoot开发案例之整合定时任务(Scheduled)的完整攻略。本文介绍了定时任务的基本实现原理、创建定时任务的方法、测试定时任务的效果等内容。希望可以帮助大家在开发中更好的应用定时任务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SpringBoot开发案例之整合定时任务(Scheduled) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 在Perl中使用Getopt::Long模块来接收用户命令行参数

    要在Perl中从命令行接收用户输入的参数,可以使用Getopt::Long模块。该模块可以轻松地解析命令行参数并为其提供选项值。下面是使用Getopt::Long模块来接收用户命令行参数的完整攻略。 安装Getopt::Long模块 首先需要确保已安装了Perl,然后可以使用CPAN模块来安装Getopt::Long模块。可以在终端或命令行窗口中输入以下命令…

    人工智能概论 2023年5月25日
    00
  • SpringCloud Stream消息驱动实例详解

    SpringCloud Stream消息驱动实例详解 本文将详细介绍Spring Cloud Stream的使用方法,包括如何使用Spring Cloud Stream进行消息驱动、如何构建生产者和消费者,并给出了两个示例说明。 什么是Spring Cloud Stream? Spring Cloud Stream是用于构建消息驱动微服务的框架,提供了一种简…

    人工智能概览 2023年5月25日
    00
  • Python实现滑块拼图验证码详解

    非常感谢您对本网站的关注。 首先,该攻略主要分为以下几个部分: 介绍滑块拼图验证码的工作机制和实现原理 简要介绍Python网络爬虫和Selenium库的基础知识 详细讲解滑块拼图验证码的Python实现步骤 以下是具体的实现步骤: 1. 导入相关库 首先,需要导入一些Python库来实现滑块拼图验证码的验证。其中,主要使用到了Selenium库和Pillo…

    人工智能概论 2023年5月25日
    00
  • win7平台快速安装、启动mongodb的方法

    以下是“win7平台快速安装、启动mongodb的方法”的完整攻略: 安装 MongoDB 访问 MongoDB 官网(https://www.mongodb.com/download-center/community)下载 64 位 Windows 版本的 MSI 文件。 运行 MSI 文件,按照提示进行安装。在安装目标目录选择时,建议选择一个简单的目录,…

    人工智能概论 2023年5月25日
    00
  • MySQL实现批量推送数据到Mongo

    MySQL是一款常用的关系型数据库,而MongoDB则是一款常用的非关系型数据库。如果需要将MySQL中的数据批量推送到MongoDB中,可以通过以下步骤进行实现: 1.安装MongoDB的驱动程序 首先需要在本地计算机上安装MongoDB的驱动程序,可以通过以下命令进行安装(假设使用的是Python3): pip3 install pymongo 如果需要…

    人工智能概论 2023年5月25日
    00
  • django8.5 项目部署Nginx的操作步骤

    我可以为您提供如下关于“django8.5 项目部署Nginx的操作步骤”的完整攻略: 一、安装Nginx 执行命令:sudo apt-get update更新系统软件包列表 执行命令:sudo apt-get install nginx安装Nginx软件包 二、配置Nginx 进入Nginx配置文件目录:cd /etc/nginx/ 备份默认配置文件:su…

    人工智能概览 2023年5月25日
    00
  • Linux中搭建FTP服务器的方法

    下面是搭建FTP服务器的完整攻略。 准备工作 在搭建FTP服务器之前,需要安装FTP服务程序。一般来说Linux有两个常用的FTP服务程序:vsftpd和proftpd,本次攻略以vsftpd为例进行说明。安装命令为: sudo apt-get install vsftpd -y 配置FTP服务器 安装完FTP服务程序后,需要进行相应的配置,才能实现FTP的…

    人工智能概览 2023年5月25日
    00
  • ubuntu下安装Python多版本的方法及注意事项

    下面我会详细讲解“ubuntu下安装Python多版本的方法及注意事项”的完整攻略。在Ubuntu系统中,我们可以通过以下步骤来安装Python多版本。 安装pyenv pyenv是一个Python版本管理工具,它可以方便地管理多个Python版本,我们可以通过以下命令来安装pyenv。 $ git clone https://github.com/yyuu…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部