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

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

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

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

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

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

@Component
public class StartInit2 implements CommandLineRunner {

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

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

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

@Component
public class StartInit3 implements ApplicationRunner {

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

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

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

@Component
public class StartInit4 implements ApplicationListener<ApplicationStartedEvent> {

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

順序:

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

原理:

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

4、@PostConstruct 注解

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

@Component
public class StartInit {

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

}

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

項(xiàng)目啟動(dòng)時(shí),調(diào)用此方法

@Component
public class StartInit6 implements InitializingBean {

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

}

總結(jié)

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

相關(guān)文章

  • eclipse端口被占用問(wèn)題的解決方法

    eclipse端口被占用問(wèn)題的解決方法

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

    深入理解Java中@Accessors和@Builder

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

    Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter)

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

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

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

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

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

    Java安全 ysoserial CommonsCollections2示例分析

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

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

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

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

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

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

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

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

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

最新評(píng)論