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

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

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

1.介紹

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

2.常用的拓展接口

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

3.實例:

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

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

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

因為該接口在容器初始化之前所以注解是沒有用的,在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)聽器,這個接口可以根據(jù)不同的事件進行不同的觸發(fā)條件

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

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

代碼示例:

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

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

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

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

4.CommandLineRunner

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

@Component
public class MyCommandLineRunner implements CommandLineRunner {

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

}

4.其他拓展接口:

1.InstantiationAwareBeanPostProcessor

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

2.SmartInstantiationAwareBeanPostProcessor

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

    Java類加載器ClassLoader用法解析

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

    Java Session會話追蹤原理深入分析

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

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

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

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

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

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

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

最新評論

龙口市| 大荔县| 多伦县| 博客| 集贤县| 哈密市| 六安市| 任丘市| 无棣县| 天台县| 通榆县| 全南县| 汪清县| 于都县| 呼伦贝尔市| 专栏| 肃南| 合川市| 托克托县| 嘉义市| 康定县| 茶陵县| 河北省| 江川县| 武义县| 久治县| 姚安县| 芜湖市| 龙陵县| 建昌县| 上林县| 阿拉善盟| 衡水市| 鹿泉市| 星子县| 南木林县| 怀仁县| 邵武市| 普安县| 景东| 泗阳县|