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

springboot啟動(dòng)過程中常用的回調(diào)示例詳解

 更新時(shí)間:2022年01月10日 08:29:54   作者:楊-大明  
springboot提供非常豐富回調(diào)接口,利用這些接口可以做非常多的事情,本文通過實(shí)例代碼給大家介紹springboot啟動(dòng)過程中常用的回調(diào)知識(shí)感興趣的朋友跟隨小編一起看看吧

1.介紹

springboot提供非常豐富回調(diào)接口,利用這些接口可以做非常多的事情,對(duì)于一些常用的回調(diào)接口進(jìn)行介紹

2.常用的拓展接口

1.ApplicationContextInitializer
2.ApplicationListener
3.ApplicationRunner
4.CommandLineRunner

3.實(shí)例:

1.ApplicationContextInitializer接口是在spring容器初初始化之前調(diào)用的

創(chuàng)建MyApplicationContextInitializer類實(shí)現(xiàn)ApplicationContextInitializer接口

public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        System.out.println("MyApplicationContextInitializer啟動(dòng)。。。。。。。。。。");
    }
}

因?yàn)樵摻涌谠谌萜鞒跏蓟八宰⒔馐菦]有用的,在mian方法中初始化MyApplicationContextInitializer

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(Application.class);
        springApplication.addInitializers(new MyApplicationContextInitializer());
        springApplication.run(args);
        //SpringApplication.run(Application.class, args);
    }
}

2.ApplicationListener監(jiān)聽器,這個(gè)接口可以根據(jù)不同的事件進(jìn)行不同的觸發(fā)條件

spring容器內(nèi)置觸發(fā)事件:

  • ContextRefreshedEvent:初始化或刷新ApplicationContext時(shí)引發(fā)的事件
  • ContextStartedEvent:ApplicationContext啟動(dòng)時(shí)引發(fā)的事件
  • ContextStoppedEvent:ApplicationContext停止時(shí)引發(fā)的事件
  • ContextClosedEvent:ApplicationContext關(guān)閉時(shí)引發(fā)的事件

代碼示例:

@Component
public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        System.out.println("MyApplicationListener。。。。。。。。。。");
    }
}

注意:spring也有ApplicationEvent接口可以自定義事件

3.ApplicationRunner觸發(fā)時(shí)機(jī)在容器加載完之后

ublic class MyApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("MyApplicationRunner。。。。。。。。。。");
    }
}
源碼:
/**
 *用于指示 bean 包含在SpringApplication時(shí)應(yīng)該運(yùn)行的SpringApplication
 *多個(gè)ApplicationRunner bean 可以在同一個(gè)應(yīng)用程序上下文中定義,并且可以使用Ordered接口或@Order注釋進(jìn)行排序。
 */
public interface ApplicationRunner {
	/**
	 * 傳入的應(yīng)用程序參數(shù)
	 */
	void run(ApplicationArguments args) throws Exception;
}

4.CommandLineRunner

功能基本與ApplicationRunner一致,區(qū)別在于,接口的參數(shù)類型,這里傳遞的是原始String 數(shù)組,拓展性ApplicationRunner會(huì)更好一點(diǎn)

@Component
public class MyCommandLineRunner implements CommandLineRunner {

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

}

4.其他拓展接口:

1.InstantiationAwareBeanPostProcessor

添加實(shí)例化前回調(diào)的BeanPostProcessor子接口,以及實(shí)例化后但在設(shè)置顯式屬性或發(fā)生自動(dòng)裝配之前的回調(diào)。
通常用于抑制特定目標(biāo) bean 的默認(rèn)實(shí)例化,例如創(chuàng)建具有特殊 TargetSources 的代理(池目標(biāo)、延遲初始化目標(biāo)等),或?qū)崿F(xiàn)其他注入策略,如字段注入。
注意:此接口為專用接口,主要供框架內(nèi)部使用。 建議盡可能實(shí)現(xiàn)普通的BeanPostProcessor接口,或者從InstantiationAwareBeanPostProcessorAdapter派生,以屏蔽對(duì)該接口的擴(kuò)展。

2.SmartInstantiationAwareBeanPostProcessor

InstantiationAwareBeanPostProcessor接口的擴(kuò)展,添加了用于預(yù)測(cè)已處理 bean 的最終類型的回調(diào)。
注意:此接口為專用接口,主要供框架內(nèi)部使用。 通常,應(yīng)用程序提供的后處理器應(yīng)該簡(jiǎn)單地實(shí)現(xiàn)普通的BeanPostProcessor接口或派生自InstantiationAwareBeanPostProcessorAdapter類。

到此這篇關(guān)于springboot啟動(dòng)過程中常用的回調(diào)的文章就介紹到這了,更多相關(guān)springboot啟動(dòng)過程回調(diào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Bean生命周期之BeanDefinition的合并過程詳解

    Spring Bean生命周期之BeanDefinition的合并過程詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Bean生命周期之BeanDefinition的合并過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

    2022-03-03
  • Spring Cloud中配置客戶端示例詳解

    Spring Cloud中配置客戶端示例詳解

    這篇文章主要介紹了Spring Cloud中配置客戶端的相關(guān)知識(shí),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java中的內(nèi)存泄漏

    Java中的內(nèi)存泄漏

    這篇文章主要介紹了Java中的內(nèi)存泄漏的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-11-11
  • Java實(shí)現(xiàn)二叉堆、大頂堆和小頂堆

    Java實(shí)現(xiàn)二叉堆、大頂堆和小頂堆

    二叉堆就是完全二叉樹,或者是靠近完全二叉樹結(jié)構(gòu)的二叉樹。大頂堆要求對(duì)于一個(gè)節(jié)點(diǎn)來說,它的左右節(jié)點(diǎn)都比它小;小頂堆要求對(duì)于一個(gè)節(jié)點(diǎn)來說,它的左右節(jié)點(diǎn)都比它大。本文將用Java分別實(shí)現(xiàn)二叉堆、大頂堆和小頂堆。需要的可以參考一下
    2022-01-01
  • springboot實(shí)現(xiàn)攔截器的3種方式及異步執(zhí)行的思考

    springboot實(shí)現(xiàn)攔截器的3種方式及異步執(zhí)行的思考

    實(shí)際項(xiàng)目中,我們經(jīng)常需要輸出請(qǐng)求參數(shù),響應(yīng)結(jié)果,方法耗時(shí),統(tǒng)一的權(quán)限校驗(yàn)等。本文首先為大家介紹 HTTP 請(qǐng)求中三種常見的攔截實(shí)現(xiàn),并且比較一下其中的差異。感興趣的可以了解一下
    2021-07-07
  • Java類加載器ClassLoader用法解析

    Java類加載器ClassLoader用法解析

    這篇文章主要介紹了Java類加載器ClassLoader用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java Session會(huì)話追蹤原理深入分析

    Java Session會(huì)話追蹤原理深入分析

    web開發(fā)階段我們主要是瀏覽器和服務(wù)器之間來進(jìn)行交互。瀏覽器和服務(wù)器之間的交互就像人和人之間進(jìn)行交流一樣,但是對(duì)于機(jī)器來說,在一次請(qǐng)求之間只是會(huì)攜帶著本次請(qǐng)求的數(shù)據(jù)的,但是可能多次請(qǐng)求之間是會(huì)有聯(lián)系的,所以提供了會(huì)話機(jī)制
    2022-11-11
  • Netty源碼分析NioEventLoop執(zhí)行select操作入口

    Netty源碼分析NioEventLoop執(zhí)行select操作入口

    這篇文章主要介紹了Netty源碼分析NioEventLoop執(zhí)行select操作入口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • spring基礎(chǔ)概念A(yù)OP與動(dòng)態(tài)代理理解

    spring基礎(chǔ)概念A(yù)OP與動(dòng)態(tài)代理理解

    這篇文章主要為大家詳細(xì)介紹了spring基礎(chǔ)概念A(yù)OP與動(dòng)態(tài)代理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • java實(shí)現(xiàn)識(shí)別二維碼圖片功能

    java實(shí)現(xiàn)識(shí)別二維碼圖片功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)識(shí)別二維碼圖片功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評(píng)論

黄石市| 和林格尔县| 黑山县| 玉山县| 开远市| 新龙县| 襄垣县| 常熟市| 海晏县| 五原县| 通渭县| 乡宁县| 永宁县| 昭平县| 蒲城县| 广宁县| 怀宁县| 舞钢市| 廊坊市| 讷河市| 湘乡市| 宜兰市| 安庆市| 红安县| 临江市| 太原市| 鹿邑县| 新乡县| 库尔勒市| 泾源县| 远安县| 阳谷县| 陆河县| 高要市| 郑州市| 庄河市| 台湾省| 凭祥市| 紫金县| 邳州市| 孝昌县|