听说可以十分钟掌握Spring Boot 集成定时任务、异步调用?

本文介绍了在Spring Boot中如何轻松设置定时任务,包括@Scheduled的fixedRate和cron方式,并详细解释了相关参数。此外,文章还讲解了同步与异步调用的区别,展示了如何通过@Async实现异步调用,以及如何处理异步调用的结果返回和自定义线程池。
摘要由CSDN通过智能技术生成

1. 定时任务

在项目开发中,经常需要定时任务来帮助我们来做一些内容,比如定时发送短信/站内信息、数据汇总统计、业务监控等,所以就要用到我们的定时任务,在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务

1.1 @Scheduled-fixedRate方式

1.1.1 pom配置

只需要引入 Spring Boot Starter jar包即可,Spring Boot Starter 包中已经内置了定时的方法

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
复制代码

1.1.2 加入注解

在Spring Boot的主类中加入**@EnableScheduling** 注解,启用定时任务的配置

package com;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class ScheduleTaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(ScheduleTaskApplication.class, args);
    }

}

复制代码

1.1.3 创建测试类

package com.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

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

//定时任务
@Component
public class SchedulerTask {
    private static final SimpleDateFormat f=new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)//5秒执行一次
    public void processFixedRate(){
        System.out.println("processFixedRate方式开启定时任务:现在的时间是"+f.format(new Date()));
    }
}
复制代码

1.1.4 参数说明

在上面的入门例子中,使用了@Scheduled(fixedRate = 5000) 注解来定义每过5秒执行的任务,对于@Scheduled 的使用可以总结 如下几种方式:

  1. @Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
  2. @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
  3. @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次

1.1.5 运行测试

1.2 @Scheduled-cron方式

还可以用另一种方式实现定时任务,只需修改测试类即可

1.2.1 修改测试类

package com.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

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

//定时任务
@Component
public class SchedulerTask {
    private static final SimpleDateFormat f=new SimpleDateFormat("HH:mm:ss");

    @Scheduled(cron = "*/5 * * * * *")
    public void processFixedRate(){
        System.out.println("processFixedRate方式开启定时任务:现在的时间是"+f.format(new Date()));
    }
}

复制代码

1.2.2 测试

1.2.3 参数说明

cron 一共有七位,最后一位是年,Spring Boot 定时方案中只需要设置六位即可

  1. 第一位,表示秒,取值 0 ~ 59;
  2. 第二位,表示分,取值 0 ~ 59
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值