0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

CommandLineRunner和ApplicationRunner兩個接口有何不同?

Android編程精選 ? 來源:CSDN ? 作者:獅子頭兒 ? 2021-07-04 10:42 ? 次閱讀

使用場景

在應用程序開發(fā)過程中,往往我們需要在容器啟動的時候執(zhí)行一些操作。

Spring Boot中提供了CommandLineRunner和ApplicationRunner兩個接口來實現(xiàn)這樣的需求。

兩個接口的不同

參數(shù)不同,其他大體相同,可根據(jù)實際需求選擇合適的接口使用。

CommandLineRunner接口中run方法的參數(shù)為String數(shù)組,ApplicationRunner中run方法的參數(shù)為ApplicationArguments。

特殊的場景

在啟動項目時,有時候我們所做的操作可能不是一次性的操作,有可能循環(huán)查詢數(shù)據(jù)庫,根據(jù)結(jié)果來處理不同的業(yè)務,亦或是監(jiān)聽消息隊列……

遇到的坑

看下面一個例子,我們啟動一個spring boot項目,正常啟動情況下,項目啟動后會打印啟動時間。

如下圖所示:

poYBAGDhIauAazacAAES8GYxook272.jpg

下面我們模擬一下啟動項目時使用CommandLineRunner,有人說CommandLineRunner是項目啟動完成后才調(diào)用的,我們看看現(xiàn)象。

pYYBAGDhIcCAbjXTAAC-kw-u9nE692.jpg

再次啟動spring boot 項目,看看日志,直接報錯,啟動異常了。

poYBAGDhIcyAdesaAAMP2XZPpwQ085.jpg

說明啟動CommandLineRunner的執(zhí)行其實是整個應用啟動的一部分,沒有打印最后的啟動時間,說明項目是在CommandLineRunner執(zhí)行完成之后才啟動完成的。

此時CommandLineRunner的run方法執(zhí)行的是一個循環(huán),循環(huán)到第四次的時候,拋出異常,直接影響主程序的啟動。

填坑

這樣的問題該如何解決呢?

這個操作影響了主線程,那么我們是否可以重新開啟一個線程,讓他單獨去做我們想要做的操作呢。

pYYBAGDhIdmANq8WAADMJg-q-6k628.jpg

我們再看看這次的日志是什么樣的:

poYBAGDhIeKAEIBzAAExSe3vTYE626.jpg

此時CommandLineRunner執(zhí)行的操作和主線程是相互獨立的,拋出異常并不會影響到主線程。

程序打印了啟動時間,并且CommandLineRunner中run方法報錯后,應用程序并沒有因為異常而終止。填坑成功。

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

責任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8447

    瀏覽量

    150723
  • spring
    +關注

    關注

    0

    文章

    338

    瀏覽量

    14295
  • Boot
    +關注

    關注

    0

    文章

    149

    瀏覽量

    35751

原文標題:什么?Spring Boot CommandLineRunner 有坑???

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    sr鎖存器特性表q為什么兩個

    SR鎖存器特性表中Q之所以兩個值,是因為這些值分別代表了鎖存器在不同輸入條件下的狀態(tài)。具體來說,Q的兩個值分別對應了鎖存器的“當前狀態(tài)”(也稱為“初態(tài)”或“現(xiàn)態(tài)”)和“新狀態(tài)”(也稱為“次態(tài)”或
    的頭像 發(fā)表于 08-28 09:28 ?460次閱讀

    功放機AB兩個聲道輸出怎么接

    聲道輸出可以分別連接到組音箱上,以實現(xiàn)立體聲效果。這種接線方式簡單直接,適用于大多數(shù)家庭影院和音響系統(tǒng)。 接線步驟: 確認接口 :首先,確認功放機AB兩個聲道輸出的接口類型(如RCA
    的頭像 發(fā)表于 08-23 10:40 ?1565次閱讀

    觸發(fā)器的兩個穩(wěn)定狀態(tài)分別是什么

    觸發(fā)器作為數(shù)字電路中的基本邏輯單元,具有兩個穩(wěn)定狀態(tài),這兩個狀態(tài)通常用于表示二進制數(shù)碼中的0和1。
    的頭像 發(fā)表于 08-12 11:01 ?442次閱讀

    雙穩(wěn)態(tài)觸發(fā)器的兩個基本性質(zhì)是什么

    雙穩(wěn)態(tài)觸發(fā)器(Bistable Trigger)是一種具有兩個穩(wěn)定狀態(tài)的邏輯電路,廣泛應用于數(shù)字電路設計中。它具有兩個基本性質(zhì):記憶性和切換性。 一、雙穩(wěn)態(tài)觸發(fā)器的基本概念 1.1 雙穩(wěn)態(tài)觸發(fā)器
    的頭像 發(fā)表于 08-11 10:08 ?495次閱讀

    CYW4373E的兩個clm_blob文件何不同?

    : \"cyfmac4373.clm_blob\" 和\"cyfmac4373-sdio.clm_blob\" clm_blob 文件。 請問這兩個文件什么區(qū)別,哪個適用于 SDIO 接口
    發(fā)表于 05-31 15:32

    兩個銅片可以形成原電池嗎

    兩個銅片本身不能形成原電池,因為原電池的工作原理依賴于兩個不同電位的電極材料之間的氧化還原反應。
    的頭像 發(fā)表于 05-21 16:23 ?769次閱讀

    arcgis中如何關聯(lián)兩個屬性表

    在ArcGIS中,關聯(lián)兩個屬性表是一重要的操作,可以通過此操作將兩個表中的數(shù)據(jù)關聯(lián)起來,以便進行分析和查詢。下面是詳細介紹如何在ArcGIS中實現(xiàn)屬性表的關聯(lián)。 首先,我們需要明確兩個
    的頭像 發(fā)表于 02-25 11:01 ?3890次閱讀

    兩個電位器地控制一變頻器,如何接線?

    兩個電位器地控制一變頻器,如何接線? 接線方式如下: 1. 首先,明確需要使用的電器設備。在這個場景中,我們需要兩個電位器(即可變電阻器)和一
    的頭像 發(fā)表于 02-05 10:13 ?4711次閱讀

    CYW54591 SoC兩個物理獨立的wifi接口嗎?

    關于 CYW54591的問題。 這個 SoC 兩個物理獨立的 wifi 接口嗎? 這意味著單獨的 MAC 地址以及像
    發(fā)表于 01-23 07:28

    光纖和光纜何不同之處?

    很多人會有這樣的疑問,光纖和光纜何不同之處?主要是因為光纖和光纜這兩個名詞容易引起混淆。在嚴格的定義下,光纖和光纜是種不同的東西,然而在現(xiàn)實生活中,許多人仍然會混淆這
    的頭像 發(fā)表于 01-15 17:01 ?766次閱讀

    如何給C語言中的函數(shù)定義兩個不同的名字?

    最近有位哥問我,如何給C語言中的函數(shù)定義兩個不同的名字?就是這兩個名字都是指向同一函數(shù),同一地址,而且兩個名字都可以當做函數(shù)來用的那種。
    的頭像 發(fā)表于 12-19 16:21 ?715次閱讀

    電子設計中的兩個不同概念:pcb與pcb封裝

    電子設計中的兩個不同概念:pcb與pcb封裝
    的頭像 發(fā)表于 12-11 15:49 ?778次閱讀

    光纖收發(fā)器tx和rx兩個口用什么跳線

    。 光纖收發(fā)器的發(fā)送端(TX)用于將電信號轉(zhuǎn)換為光信號,并將其通過光纖傳輸給接收端(RX)。因此,為了確保良好的數(shù)據(jù)傳輸和通信效果,我們需要選擇合適的跳線來連接這兩個接口。 在選擇跳線時,幾個因素需要考慮。首先是
    的頭像 發(fā)表于 12-08 16:37 ?3081次閱讀

    CAN總線為什么兩個終端電阻,作用是什么?

    CAN總線為什么兩個終端電阻,作用是什么? CAN總線是一種常用的串行通信協(xié)議,廣泛應用于汽車、工控、航空等領域。在CAN總線中,存在兩個終端電阻,即CAN總線的端各有一
    的頭像 發(fā)表于 12-07 11:15 ?2783次閱讀

    兩個硬盤2系統(tǒng)開機切換

    準備、系統(tǒng)安裝、系統(tǒng)切換和注意事項。 一、硬件準備 在開始之前,我們首先要確保我們兩個可用的硬盤,每個硬盤上都可以安裝一操作系統(tǒng)。我們建議使用兩個獨立的硬盤而不是分區(qū)來實現(xiàn)系統(tǒng)切換
    的頭像 發(fā)表于 11-28 15:08 ?7133次閱讀