SpringBoot使用CommandLineRunner和ApplicationRunner执行初始化业务方式

 更新时间:2024年08月20日 09:49:22   作者:BlueKitty1210  
这篇文章主要介绍了SpringBoot使用CommandLineRunner和ApplicationRunner执行初始化业务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

业务场景

在业务场景中,有些情况下需要我们一启动项目就执行一些操作.

例如数据配置的相关初始化,通用缓存的数据构造等。

SpringBoot为我们提供了CommandLineRunner和ApplicationRunner两个接口来实现这个功能。

接口说明

CommandLineRunner和ApplicationRunner两个接口除了参数不同,其他基本相同,可以根据实际需求选择使用.

CommandLineRunner中的run方法参数为String..., ApplicationRunner中的run方法参数为ApplicationArguments.

在同等顺序中,ApplicationRunner会比CommandLineRunner优先执行

使用方法

定义一个类实现该接口,重写其中的run方法即可. 如果有多个实现类,我们可以通过@Order注解来定义优先级(数字越低越先执行)

@Order(1)
@Component
public class MyCommandLineRunner1 implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println("========== 初始任务MyCommandLineRunner1 ==========");
    }
}

@Order(2)
@Component
public class MyCommandLineRunner2 implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println("========== 初始任务MyCommandLineRunner2 ==========");
//        throw new RuntimeException("模拟异常");
    }
}

@Order(2)
@Component
public class MyApplicationRunner1 implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("========== 初始任务MyApplicationRunner1 ==========");
    }
}

启动项目, 输出如下:

注意事项

1. CommandLineRunner和ApplicationRunner的执行其实是整个项目启动周期中的一部分,Runner执行完成后,才最终启动项目.

2. 如果Runner中出现异常, 就会影响项目的启动,所以要在Runner中处理异常

3. 如果Runner中需要指定定时周期任务(如一直循环打印某些信息等),需要在异步线程中执行,否则项目的主线程会一直阻塞,无法启动成功

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java模拟实现银行ATM机操作

    java模拟实现银行ATM机操作

    这篇文章主要为大家详细介绍了java模拟实现银行ATM机操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • SpringCloud之LoadBalancer负载均衡服务调用过程

    SpringCloud之LoadBalancer负载均衡服务调用过程

    这篇文章主要介绍了SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • SpringSecurity整合Jwt过程图解

    SpringSecurity整合Jwt过程图解

    这篇文章主要介绍了SpringSecurity整合Jwt过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 详谈Array和ArrayList的区别与联系

    详谈Array和ArrayList的区别与联系

    下面小编就为大家带来一篇详谈Array和ArrayList的区别与联系。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java中的static和final关键字的使用详解

    Java中的static和final关键字的使用详解

    这篇文章主要介绍了Java中的static和final关键字的使用详解,  当方法名前有static,即为static方法,可以方便我们无需创建对象也可以调用此方法,静态方法比较拉,只可以访问 静态的 属性/变量/方法,无法访问非静态的这些属性/变量/方法,需要的朋友可以参考下
    2024-01-01
  • java将一个目录下的所有数据复制到另一个目录下

    java将一个目录下的所有数据复制到另一个目录下

    这篇文章主要为大家详细介绍了java将一个目录下的所有数据复制到另一个目录下,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • IDEA工具maven不加载jar包问题排查及解决

    IDEA工具maven不加载jar包问题排查及解决

    文章记录了在IDEA中Maven不加载jar包的问题排查过程,尝试更换Maven、检查配置等方法均未解决,最后仅通过命令行手动执行mvn命令暂时解决,但IDEA中依赖仍不加载
    2025-10-10
  • Java中的注解与注解处理器

    Java中的注解与注解处理器

    这篇文章主要介绍了Java中的注解与注解处理器,元注解的作用是负责注解其他注解, Java5.0定义了4个标准的meta-annotation(元注解)类型,它们被用来提供对其它注解类型进行说明,需要的朋友可以参考下
    2023-11-11
  • Java生成验证码

    Java生成验证码

    本文介绍了Java生成验证码的流程与方法。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 详解SpringBoot2 使用Spring Session集群

    详解SpringBoot2 使用Spring Session集群

    这篇文章主要介绍了SpringBoot2 使用Spring Session集群,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04

最新评论