SpringBoot中@Scheduled实现服务启动时执行一次

 更新时间:2024年08月08日 09:34:13   作者:码至终章  
本文主要介绍了SpringBoot中@Scheduled实现服务启动时执行一次,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

说到定时任务,我们应该会想起@Scheduled,Quartz以及XXL-JOB,但是有的单体服务或者小项目,为了方便快捷,可能会直接使用@Scheduled去实现异步任务。因此,从而延伸出本文的主题需求。

当项目中使用@Scheduled,如何在项目启动的时候让指定的异步任务提前执行一次?

一、@Scheduled详解

@Scheduled注解支持多个参数,用于灵活控制任务执行时间

cron:Cron表达式,可以精准控制秒、分、小时、日、月、周等

在这里插入图片描述

  • zone:接收一个时区,比如我们一般使用的时区Asia/Shanghai,该字段我们一般留空。
  • fixedDelay:上一次执行完毕时间点之后多长时间再执行。如@Scheduled(fixedDelay = 5000)
  • fixedDelayString:与 fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符,如@Scheduled(fixedDelayString = “5000”)
  • fixedRate:上一次开始执行时间点之后多长时间再执行,如@Scheduled(fixedRate = 5000)
  • fixedRateString:与 fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
  • initialDelay:第一次延迟多长时间后再执行,如第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次@Scheduled(initialDelay=1000, fixedRate=5000)
  • initialDelayString:与 initialDelayString 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

二、逻辑实现

1、创建定时任务逻辑方法

/**
 * @Author 码至终章
 * @Version 1.0
 */
@Component
public class ScheduledTest {

    @Scheduled(cron = "* 1 * * * ?")
    public void task1() throws Exception{
        System.out.println("task1 执行: " + Thread.currentThread() + "-" + DateTime.now());
    }
}

2、新建一个启动执行类

该类主要在启动时手动调用指定的任务方法

/**
 * @Author 码至终章
 * @Version 1.0
 */
@Component
public class StartupTasks {

    private final ScheduledTest scheduledTasks;

    public StartupTasks(ScheduledTest scheduledTasks) {
        this.scheduledTasks = scheduledTasks;
    }

    @PostConstruct
    public void startUp() {
        try {
            System.out.println("服务启动执行任务");
            scheduledTasks.task1();
        }catch (Exception e){
			e.printStackTrace();
        }
    }
}

注:启动类记得自己加上@EnableScheduling,定时任务 才会执行,当然这个不影响本文的逻辑测试

三、测试结果

服务启动后,查看打印信息

在这里插入图片描述

到此这篇关于SpringBoot中@Scheduled实现服务启动时执行一次的文章就介绍到这了,更多相关SpringBoot 服务启动时执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Mockito 结合 Springboot 进行应用测试的方法详解

    Mockito 结合 Springboot 进行应用测试的方法详解

    这篇文章主要介绍了Mockito 结合 Springboot 进行应用测试的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot3读取配置文件application.properties属性值的几种方式

    SpringBoot3读取配置文件application.properties属性值的几种方式

    这篇文章主要介绍了SpringBoot3读取配置文件application.properties属性值的几种方式,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-11-11
  • Java 是如何利用接口避免函数回调的方法

    Java 是如何利用接口避免函数回调的方法

    本篇文章主要介绍了Java 是如何利用接口避免函数回调的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 基于CopyOnWriteArrayList并发容器(实例讲解)

    基于CopyOnWriteArrayList并发容器(实例讲解)

    下面小编就为大家带来一篇基于CopyOnWriteArrayList并发容器(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • SpringBoot通过注解监测Controller接口的代码示例

    SpringBoot通过注解监测Controller接口的代码示例

    在Spring Boot中,度量指标(Metrics)是监控和诊断应用性能与行为的重要工具,Spring Boot通过集成Micrometer和Spring Boot Actuator,提供了强大的度量指标收集与暴露功能,本文介绍了SpringBoot通过注解监测Controller接口,需要的朋友可以参考下
    2024-07-07
  • java反射机制示例

    java反射机制示例

    这篇文章主要介绍了java反射机制示例,需要的朋友可以参考下
    2014-04-04
  • spring boot+vue实现JSAPI微信支付的完整步骤

    spring boot+vue实现JSAPI微信支付的完整步骤

    JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付,下面这篇文章主要给大家介绍了关于spring boot+vue实现JSAPI微信支付的相关资料,需要的朋友可以参考下
    2022-05-05
  • JAVA学习之一步步搭建spring框架

    JAVA学习之一步步搭建spring框架

    这篇文章主要介绍了JAVA学习之一步步搭建spring框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • springmvc后台基于@ModelAttribute获取表单提交的数据

    springmvc后台基于@ModelAttribute获取表单提交的数据

    这篇文章主要介绍了springmvc后台基于@ModelAttribute获取表单提交的数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Spring之IOC底层原理详解

    Spring之IOC底层原理详解

    这篇文章主要介绍了Spring之IOC底层原理,内容详细,文章简单易懂,具有一定的参考价值,需要的朋友可以参考下
    2023-01-01

最新评论