最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot啟動(dòng)后執(zhí)行方法小結(jié)

 更新時(shí)間:2023年04月17日 09:37:25   作者:鶴沖天Pro  
本文主要介紹了Springboot啟動(dòng)后執(zhí)行方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、注解@PostConstruct

使用注解@PostConstruct是最常見(jiàn)的一種方式,存在的問(wèn)題是如果執(zhí)行的方法耗時(shí)過(guò)長(zhǎng),會(huì)導(dǎo)致項(xiàng)目在方法執(zhí)行期間無(wú)法提供服務(wù)。

@Component
public class StartInit {
//
// ? ?@Autowired ? 可以注入bean
// ? ?ISysUserService userService;

? ? @PostConstruct
? ? public void init() throws InterruptedException {
? ? ? ? Thread.sleep(10*1000);//這里如果方法執(zhí)行過(guò)長(zhǎng)會(huì)導(dǎo)致項(xiàng)目一直無(wú)法提供服務(wù)
? ? ? ? System.out.println(123456);
? ? }
}

二、CommandLineRunner接口

實(shí)現(xiàn)CommandLineRunner接口 然后在run方法里面調(diào)用需要調(diào)用的方法即可,好處是方法執(zhí)行時(shí),項(xiàng)目已經(jīng)初始化完畢,是可以正常提供服務(wù)的。

同時(shí)該方法也可以接受參數(shù),可以根據(jù)項(xiàng)目啟動(dòng)時(shí): java -jar demo.jar arg1 arg2 arg3 傳入的參數(shù)進(jìn)行一些處理。

@Component
public class CommandLineRunnerImpl implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println(Arrays.toString(args));
    }
}

三、實(shí)現(xiàn)ApplicationRunner接口

實(shí)現(xiàn)ApplicationRunner接口和實(shí)現(xiàn)CommandLineRunner接口基本是一樣的。

唯一的不同是啟動(dòng)時(shí)傳參的格式,CommandLineRunner對(duì)于參數(shù)格式?jīng)]有任何限制,ApplicationRunner接口參數(shù)格式必須是:–key=value

@Component
public class ApplicationRunnerImpl implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        Set<String> optionNames = args.getOptionNames();
        for (String optionName : optionNames) {
            List<String> values = args.getOptionValues(optionName);
            System.out.println(values.toString());
        }
    }
}

四、實(shí)現(xiàn)ApplicationListener

實(shí)現(xiàn)接口ApplicationListener方式和實(shí)現(xiàn)ApplicationRunner,CommandLineRunner接口都不影響服務(wù),都可以正常提供服務(wù),注意監(jiān)聽(tīng)的事件,通常是ApplicationStartedEvent 或者ApplicationReadyEvent,其他的事件可能無(wú)法注入bean。

@Component
public class ApplicationListenerImpl implements ApplicationListener<ApplicationStartedEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("listener");
    }
}

五、四種方式的執(zhí)行順序

注解方式@PostConstruct 始終最先執(zhí)行

如果監(jiān)聽(tīng)的是ApplicationStartedEvent 事件,則一定會(huì)在CommandLineRunner和ApplicationRunner 之前執(zhí)行。

如果監(jiān)聽(tīng)的是ApplicationReadyEvent 事件,則一定會(huì)在CommandLineRunner和ApplicationRunner 之后執(zhí)行。

CommandLineRunner和ApplicationRunner 默認(rèn)是ApplicationRunner先執(zhí)行,如果雙方指定了@Order 則按照@Order的大小順序執(zhí)行,大的先執(zhí)行。

到此這篇關(guān)于Springboot啟動(dòng)后執(zhí)行方法小結(jié)的文章就介紹到這了,更多相關(guān)Springboot啟動(dòng)后執(zhí)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)重定向過(guò)程中添加請(qǐng)求頭信息

    Java實(shí)現(xiàn)重定向過(guò)程中添加請(qǐng)求頭信息

    在Java中,我們經(jīng)常需要使用網(wǎng)絡(luò)請(qǐng)求來(lái)與服務(wù)器進(jìn)行通信,在進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),有時(shí)我們需要在重定向過(guò)程中添加請(qǐng)求頭信息,本文將介紹如何使用Java在重定向過(guò)程中添加請(qǐng)求頭,并提供相應(yīng)的代碼示例,
    2023-10-10
  • Java ZooKeeper分布式鎖實(shí)現(xiàn)圖解

    Java ZooKeeper分布式鎖實(shí)現(xiàn)圖解

    ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等
    2022-03-03
  • JAVA實(shí)現(xiàn)redis分布式雙重加鎖的示例代碼

    JAVA實(shí)現(xiàn)redis分布式雙重加鎖的示例代碼

    在高并發(fā)環(huán)境下,通過(guò)Redis分布式鎖實(shí)現(xiàn)數(shù)據(jù)唯一性校驗(yàn)非常關(guān)鍵,為避免用戶數(shù)據(jù)重復(fù),可使用Redis鎖或集合數(shù)據(jù)結(jié)構(gòu)進(jìn)行前置檢查,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Caused?by:?java.lang.NumberFormatException:?For?input?string:?“port“(問(wèn)題解決)

    Caused?by:?java.lang.NumberFormatException:?For?input?s

    這篇文章主要介紹了Caused?by:?java.lang.NumberFormatException:?For?input?string:?“port“,本文給大家分享完美解決方法,需要的朋友可以參考下
    2023-01-01
  • Java程序順序結(jié)構(gòu)中邏輯控制語(yǔ)句詳解流程

    Java程序順序結(jié)構(gòu)中邏輯控制語(yǔ)句詳解流程

    在程序開(kāi)發(fā)的過(guò)程之中一共會(huì)存在有三種程序邏輯:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu),對(duì)于之前所編寫(xiě)的代碼大部分都是順序結(jié)構(gòu)的定義,即:所有的程序?qū)凑斩x的代碼順序依次執(zhí)行
    2021-10-10
  • list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細(xì)解析

    list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細(xì)解析

    以下是對(duì)Java中l(wèi)ist,set,map,數(shù)組之間的相互轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • Spring中XmlWebApplicationContext的實(shí)現(xiàn)

    Spring中XmlWebApplicationContext的實(shí)現(xiàn)

    XmlWebApplicationContext是Spring?Framework中的一個(gè)重要類(lèi),本文主要介紹了Spring中XmlWebApplicationContext,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • java基礎(chǔ)的詳細(xì)了解第八天

    java基礎(chǔ)的詳細(xì)了解第八天

    這篇文章對(duì)Java編程語(yǔ)言的基礎(chǔ)知識(shí)作了一個(gè)較為全面的匯總,在這里給大家分享一下。需要的朋友可以參考,希望能給你帶來(lái)幫助
    2021-08-08
  • Java設(shè)計(jì)模式中的門(mén)面模式詳解

    Java設(shè)計(jì)模式中的門(mén)面模式詳解

    門(mén)面模式又叫外觀模式(Facade Pattern),主要用于隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問(wèn)系統(tǒng)的接口,本文通過(guò)實(shí)例代碼給大家介紹下java門(mén)面模式的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-09-09
  • SpringBoot通過(guò)JSON傳遞請(qǐng)求參數(shù)的實(shí)例詳解

    SpringBoot通過(guò)JSON傳遞請(qǐng)求參數(shù)的實(shí)例詳解

    這篇文章主要介紹了SpringBoot通過(guò)JSON傳遞請(qǐng)求參數(shù),示例介紹SpringMVC如何通過(guò)JSON格式傳遞入?yún)ⅲa簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

峨边| 藁城市| 信阳市| 尤溪县| 历史| 武城县| 香河县| 上犹县| 婺源县| 毕节市| 中方县| 宿松县| 南宫市| 东光县| 拉萨市| 昌宁县| 达尔| 怀柔区| 陇川县| 永康市| 嘉义市| 麦盖提县| 荔波县| 泰宁县| 巧家县| 武平县| 塔城市| 沭阳县| 武邑县| 平阴县| 皮山县| 玉田县| 隆化县| 安塞县| 洞口县| 吉木乃县| 伊川县| 隆尧县| 南郑县| 黑龙江省| 格尔木市|