0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CommandLineRunner和ApplicationRunner两个接口有何不同?

Android编程精选 ? 来源:CSDN ? 作者:狮子头儿 ? 2021-07-04 10:42 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

使用场景

在应用程序开发过程中,往往我们需要在容器启动的时候执行一些操作。

Spring Boot中提供了CommandLineRunner和ApplicationRunner两个接口来实现这样的需求。

两个接口的不同

参数不同,其他大体相同,可根据实际需求选择合适的接口使用。

CommandLineRunner接口中run方法的参数为String数组,ApplicationRunner中run方法的参数为ApplicationArguments。

特殊的场景

在启动项目时,有时候我们所做的操作可能不是一次性的操作,有可能循环查询数据库,根据结果来处理不同的业务,亦或是监听消息队列……

遇到的坑

看下面一个例子,我们启动一个spring boot项目,正常启动情况下,项目启动后会打印启动时间。

如下图所示:

poYBAGDhIauAazacAAES8GYxook272.jpg

下面我们模拟一下启动项目时使用CommandLineRunner,有人说CommandLineRunner是项目启动完成后才调用的,我们看看现象。

pYYBAGDhIcCAbjXTAAC-kw-u9nE692.jpg

再次启动spring boot 项目,看看日志,直接报错,启动异常了。

poYBAGDhIcyAdesaAAMP2XZPpwQ085.jpg

说明启动CommandLineRunner的执行其实是整个应用启动的一部分,没有打印最后的启动时间,说明项目是在CommandLineRunner执行完成之后才启动完成的。

此时CommandLineRunner的run方法执行的是一个循环,循环到第四次的时候,抛出异常,直接影响主程序的启动。

填坑

这样的问题该如何解决呢?

这个操作影响了主线程,那么我们是否可以重新开启一个线程,让他单独去做我们想要做的操作呢。

pYYBAGDhIdmANq8WAADMJg-q-6k628.jpg

我们再看看这次的日志是什么样的:

poYBAGDhIeKAEIBzAAExSe3vTYE626.jpg

此时CommandLineRunner执行的操作和主线程是相互独立的,抛出异常并不会影响到主线程。

程序打印了启动时间,并且CommandLineRunner中run方法报错后,应用程序并没有因为异常而终止。填坑成功。

原文链接:https://blog.csdn.net/zwq_zwq_zwq/article/details/81059017

责任编辑:lq6

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9099

    浏览量

    154339
  • spring
    +关注

    关注

    0

    文章

    341

    浏览量

    15262
  • Boot
    +关注

    关注

    0

    文章

    153

    浏览量

    36896

原文标题:什么?Spring Boot CommandLineRunner 有坑!?

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    可能在 FX3 GPIF2 中创建两个独立的状态机吗?

    我想,如果我想通过 FX3 GPIF2 创建两个独立的传输流接口,我需要在 GPIF2 设计器中创建两个独立的状态机,我是否可能在 GPIF2 设计器中创建
    发表于 05-20 06:14

    可以驱动两个直流刷电机、一双极步进电机的双H桥电机驱动芯片-SS8833E

    电机驱动芯片 - SS8833E是一种双桥电机驱动器,具有两个H桥驱动器,可以驱动两个直流刷电机、一双极步进电机、电磁阀或其他电感负载。
    的头像 发表于 02-12 09:43 ?633次阅读
    可以驱动<b class='flag-5'>两个</b>直流<b class='flag-5'>有</b>刷电机、一<b class='flag-5'>个</b>双极步进电机的双H桥电机驱动芯片-SS8833E

    在ADS828中两个输入管脚IN+和IN-,当两个管脚的都接不同的输入的时候,输入值是如何计算的啊?

    在ADS828中两个输入管脚IN+和IN-,当两个管脚的都接不同的输入的时候,输入值是如何计算的啊?是等于IN+的输入电压减去IN-的电压吗?
    发表于 02-06 06:25

    EE-96:将两个AD73311编解码器与ADSP-218x接口

    电子发烧友网站提供《EE-96:将两个AD73311编解码器与ADSP-218x接口.pdf》资料免费下载
    发表于 01-13 16:32 ?0次下载
    EE-96:将<b class='flag-5'>两个</b>AD73311编解码器与ADSP-218x<b class='flag-5'>接口</b>

    如何把两个数据返回给调用函数

    已经知道函数会返回两个数据,提前申请两个元素的内存,并且把数组作为参数传递过去,把返回值放在数组中就行。 第三种,定义一全局的结构体变量,这样可以不用传参也不用返回,直接操作全局数据。 比较典型的错误写法
    的头像 发表于 01-08 10:15 ?483次阅读

    ADC124S021同时使用两个通道,两个通道的转换数据发生串扰怎么解决?

    用DSP的SPI接口接ADC124S021,如果只是进行单通道的信号采集,则转换后的数值稳定,但是同时使用两个通道时则两个通道的数据发生串扰现象。如,我单独使用2通道,则转换后数值稳定,但是如果
    发表于 12-30 07:41

    ads1013两个模拟输入,可以接不同的两个模拟输入吗?

    ads1013两个模拟输入,可以接不同的两个模拟输入吗,驱动程序中怎么分别读两个模拟输入的转换结果?
    发表于 12-02 08:02

    两个ADS1298连接采集ECG,两个器件的WCT具体要怎么连接,是否器件的WCT可以悬空?

    两个ADS1298连接采集ECG,根据数据手册中的FIGURE45 device1的连接,所有RLDINV相连,RLDIN引脚是否都不用同RLDOUT 和RLDINV相连接?两个器件的WCT具体要怎么连接,是否
    发表于 11-19 06:10

    OMAPL137可以连接两个左右两个通道麦克风输入吗?

    Hi!大家好!我一些问题:OMAPL137 Evm 技术手册上写有P4 Microphone In 接口是stereo microphone line input,如下图。 意思是可以连接两个
    发表于 10-29 06:04

    两个开关电源可以并联使用吗

    两个开关电源并联使用是一相对复杂的话题,涉及到电子电路设计、电源管理、安全规范等多个方面。 1. 开关电源的基本原理 开关电源是一种通过电子开关元件(如晶体管、MOSFET等)快速切换来控制电流
    的头像 发表于 10-09 16:04 ?5518次阅读

    单相电机两个绕组都在定子上吗

    单相电机的两个绕组,即起动线圈(或称为辅助绕组、副绕组)和运行线圈(或称为主绕组),都位于定子上 。这两个绕组在电机中起着关键作用,共同协作以产生旋转磁场,从而使电机能够运转。 单相电机通常由一
    的头像 发表于 09-03 15:10 ?2433次阅读

    ad如何设置两个元器件的距离

    在Altium Designer(简称AD)中设置两个元器件之间的距离,主要是通过设置元器件间的安全间距(Clearance)规则来实现的。这个规则定义了元器件之间、元器件与走线之间以及其他设计元素
    的头像 发表于 09-02 15:31 ?1.8w次阅读

    sr锁存器特性表q为什么两个

    SR锁存器特性表中Q之所以两个值,是因为这些值分别代表了锁存器在不同输入条件下的状态。具体来说,Q的两个值分别对应了锁存器的“当前状态”(也称为“初态”或“现态”)和“新状态”(也称为“次态”或
    的头像 发表于 08-28 09:28 ?1547次阅读

    功放机AB两个声道输出怎么接

    声道输出可以分别连接到组音箱上,以实现立体声效果。这种接线方式简单直接,适用于大多数家庭影院和音响系统。 接线步骤: 确认接口 :首先,确认功放机AB两个声道输出的接口类型(如RCA
    的头像 发表于 08-23 10:40 ?1.1w次阅读

    LMK05318具两个频域的超低抖动网络同步器时钟数据表

    电子发烧友网站提供《LMK05318具两个频域的超低抖动网络同步器时钟数据表.pdf》资料免费下载
    发表于 08-23 10:17 ?0次下载
    LMK05318具<b class='flag-5'>有</b><b class='flag-5'>两个</b>频域的超低抖动网络同步器时钟数据表