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

Springboot啟動后立即某個執(zhí)行方法的四種方式

 更新時間:2022年06月02日 14:51:05   作者:光滑的禿頭  
spring項目如何在啟動項目是執(zhí)行一些操作,在spring中能通過那些操作實現(xiàn)這個功能呢,下面這篇文章主要給大家介紹了關(guān)于Springboot啟動后立即某個執(zhí)行方法的四種方式,需要的朋友可以參考下

最新需要在項目啟動后立即執(zhí)行某個方法,然后特此記錄下找到的四種方式

注解@PostConstruct

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

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

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

CommandLineRunner接口

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

同時該方法也可以接受參數(shù),可以根據(jù)項目啟動時: java -jar demo.jar arg1 arg2 arg3 傳入的參數(shù)進(jìn)行一些處理。詳見: Spring boot CommandLineRunner啟動任務(wù)傳參

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

實現(xiàn)ApplicationRunner接口

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

唯一的不同是啟動時傳參的格式,CommandLineRunner對于參數(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());
        }
    }
}

實現(xiàn)ApplicationListener

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

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

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

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

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

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

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

總結(jié)

到此這篇關(guān)于Springboot啟動后立即某個執(zhí)行方法的四種方式的文章就介紹到這了,更多相關(guān)Springboot啟動后執(zhí)行方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法

    解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法

    這篇文章主要介紹了解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java?獲取子串速率比較分析

    java?獲取子串速率比較分析

    這篇文章主要為大家介紹了java?獲取子串速率比較分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Java中的Static class詳解及實例代碼

    Java中的Static class詳解及實例代碼

    這篇文章主要介紹了 Java中的Static class詳解及實例代碼的相關(guān)資料,在Java中我們可以有靜態(tài)實例變量、靜態(tài)方法、靜態(tài)塊。類也可以是靜態(tài)的,需要的朋友可以參考下
    2017-03-03
  • Java中實現(xiàn)線程的超時中斷方法實例

    Java中實現(xiàn)線程的超時中斷方法實例

    之前在使用Java實現(xiàn)熔斷降級組件的時候,需要實現(xiàn)接口請求的超時中斷,通過查找相關(guān)資料了解了相關(guān)的方法,下面這篇文章主要給大家介紹了關(guān)于Java中實現(xiàn)線程的超時中斷的相關(guān)資料,需要的朋友可以參考下
    2018-06-06
  • idea自定義快捷代碼生成模板的方法

    idea自定義快捷代碼生成模板的方法

    這篇文章主要介紹了idea自定義快捷代碼生成模板的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Spring純注解配置實現(xiàn)代碼示例解析

    Spring純注解配置實現(xiàn)代碼示例解析

    這篇文章主要介紹了Spring純注解配置實現(xiàn)代碼示例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 簡單了解Spring beanfactory循環(huán)依賴命名重復(fù)屬性

    簡單了解Spring beanfactory循環(huán)依賴命名重復(fù)屬性

    這篇文章主要介紹了簡單了解Spring beanfactory循環(huán)依賴命名重復(fù)2大屬性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Spring Boot2.x如何自定義Endpoint

    Spring Boot2.x如何自定義Endpoint

    這篇文章主要介紹了Spring Boot2.x如何自定義Endpoint,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Springboot整合mybatis-plus使用pageHelper進(jìn)行分頁(使用步驟)

    Springboot整合mybatis-plus使用pageHelper進(jìn)行分頁(使用步驟)

    PageHelper是一個MyBatis分頁插件,可以方便地實現(xiàn)數(shù)據(jù)庫查詢結(jié)果的分頁功能,在Maven或Gradle項目中引入依賴,并在配置文件中進(jìn)行配置,本文給大家介紹Springboot整合mybatis-plus使用pageHelper進(jìn)行分頁,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Java數(shù)據(jù)結(jié)構(gòu)中圖的進(jìn)階詳解

    Java數(shù)據(jù)結(jié)構(gòu)中圖的進(jìn)階詳解

    在Java學(xué)習(xí)與應(yīng)用中,數(shù)據(jù)結(jié)構(gòu)無疑是每個人都要接觸的難點,為了更好的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這一塊內(nèi)容,用圖來理解便是最好的方式,讓我們一起來了解本篇內(nèi)容圖的進(jìn)階
    2022-01-01

最新評論

车致| 石城县| 伊金霍洛旗| 旌德县| 陆川县| 开封市| 慈利县| 股票| 玉溪市| 金山区| 武定县| 龙州县| 瑞安市| 祥云县| 石林| 雷州市| 渭源县| 宜阳县| 柳江县| 巴青县| 嘉黎县| 建水县| 绿春县| 会泽县| 浠水县| 泾阳县| 德钦县| 通海县| 内乡县| 乌拉特后旗| 应城市| 凭祥市| 霞浦县| 和龙市| 屏东县| 白城市| 古蔺县| 南靖县| 盐池县| 略阳县| 余姚市|