欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot啟動后執(zhí)行方法的五種實現(xiàn)方式

 更新時間:2025年02月07日 09:44:15   作者:sco5282  
本文介紹了SpringBoot中五種在項目啟動后執(zhí)行方法的方式,包括實現(xiàn)CommandLineRunner和ApplicationRunner接口、實現(xiàn)ApplicationListener接口、使用@PostConstruct注解以及實現(xiàn)InitializingBean接口,每種方式都有其特點和適用場景

在 SpringBoot 工程 啟動后, 執(zhí)行方法的五種方式:

1、實現(xiàn) CommandLineRunner 接口

項目初始化完畢后,才會調(diào)用方法,提供服務(wù)

@Component
public class StartInit2 implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println("CommandLineRunner====================");
    }
}

2、實現(xiàn) ApplicationRunner 接口

同 CommandLineRunner。只是傳參格式不一樣。CommandLineRunner:沒有任何限制;ApplicationRunner:key-value

@Component
public class StartInit3 implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) {
        System.out.println("ApplicationRunner=================");
    }
}

3、實現(xiàn) ApplicationListener 接口

項目初始化完畢后,才會調(diào)用方法,提供服務(wù)。注意監(jiān)聽的事件,通常是 ApplicationStartedEvent 或者 ApplicationReadyEvent,其他的事件可能無法注入 bean。

@Component
public class StartInit4 implements ApplicationListener<ApplicationStartedEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("ApplicationListener================ApplicationStartedEvent");
    }
}
  • 如果監(jiān)聽的是 ApplicationStartedEvent 事件,則 ApplicationListener 一定會在 CommandLineRunner 和 ApplicationRunner 之前執(zhí)行;
  • 如果監(jiān)聽的是 ApplicationReadyEvent 事件,則 ApplicationListener 一定會在 CommandLineRunner 和 ApplicationRunner 之后執(zhí)行;

順序:

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

原理:

  1. SpringApplication 的run方法會執(zhí)行afterRefresh方法。
  2. afterRefresh方法會執(zhí)行callRunners方法。
  3. callRunners方法會調(diào)用所有實現(xiàn)ApplicationRunner和CommondLineRunner接口的方法callRunners方法會調(diào)用所有實現(xiàn)ApplicationRunner和CommondLineRunner接口的方法

4、@PostConstruct 注解

在項目初始化過程中,就會調(diào)用此方法。如果業(yè)務(wù)邏輯執(zhí)行很耗時,可能會導(dǎo)致項目啟動失敗。

@Component
public class StartInit {

    @PostConstruct
    public void init() {
        System.out.println("@PostConstruct===============================");
    }

}

5、實現(xiàn) InitializingBean 接口

項目啟動時,調(diào)用此方法

@Component
public class StartInit6 implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
        System.out.println("InitializingBean====================");
    }

}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • eclipse端口被占用問題的解決方法

    eclipse端口被占用問題的解決方法

    這篇文章主要給大家介紹了關(guān)于eclipse端口被占用問題的解決方法,文中通過圖文以及命令代碼介紹的非常詳細,對遇到這個問題的朋友們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • 深入理解Java中@Accessors和@Builder

    深入理解Java中@Accessors和@Builder

    本文主要介紹了@Accessors和@Builder使用,區(qū)別與坑,對使用這兩個注解的有一定的幫助,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter)

    Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter)

    本文主要介紹了Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter),就像文章標題所說的,SpringSecurity已經(jīng)廢棄了繼承WebSecurityConfigurerAdapter的配置方式,下面就來詳細的介紹一下,感興趣的可以了解一下
    2023-12-12
  • Junit 5中@ParameterizedTest與@EnumSource結(jié)合使用

    Junit 5中@ParameterizedTest與@EnumSource結(jié)合使用

    今天小編就為大家分享一篇關(guān)于Junit 5中@ParameterizedTest與@EnumSource結(jié)合使用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java過濾器doFilter里chain.doFilter()函數(shù)的理解

    Java過濾器doFilter里chain.doFilter()函數(shù)的理解

    這篇文章主要介紹了Java過濾器doFilter里chain.doFilter()函數(shù)的理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java安全 ysoserial CommonsCollections2示例分析

    Java安全 ysoserial CommonsCollections2示例分析

    這篇文章主要為大家介紹了Java安全 ysoserial CommonsCollections2示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 簡單了解spring bean的循環(huán)引用

    簡單了解spring bean的循環(huán)引用

    這篇文章主要介紹了簡單了解spring bean的循環(huán)引用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • SpringBoot模擬實現(xiàn)流式輸出效果

    SpringBoot模擬實現(xiàn)流式輸出效果

    這篇文章主要為大家詳細介紹了如何使用SpringBoot模擬實現(xiàn)流式輸出效果,并在前端使用流式接收數(shù)據(jù)并打印,感興趣的小伙伴可以參考一下
    2025-03-03
  • SpringBoot接口防抖(防重復(fù)提交)的實現(xiàn)方案

    SpringBoot接口防抖(防重復(fù)提交)的實現(xiàn)方案

    所謂防抖,一是防用戶手抖,二是防網(wǎng)絡(luò)抖動,在Web系統(tǒng)中,表單提交是一個非常常見的功能,如果不加控制,容易因為用戶的誤操作或網(wǎng)絡(luò)延遲導(dǎo)致同一請求被發(fā)送多次,所以本文給大家介紹了SpringBoot接口防抖(防重復(fù)提交)的實現(xiàn)方案,需要的朋友可以參考下
    2024-04-04
  • 淺談靜態(tài)變量、成員變量、局部變量三者的區(qū)別

    淺談靜態(tài)變量、成員變量、局部變量三者的區(qū)別

    下面小編就為大家?guī)硪黄獪\談靜態(tài)變量、成員變量、局部變量三者的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論