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

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關閉時引發(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時應該運行的SpringApplication
 *多個ApplicationRunner bean 可以在同一個應用程序上下文中定義,并且可以使用Ordered接口或@Order注釋進行排序。
 */
public interface ApplicationRunner {
	/**
	 * 傳入的應用程序參數(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子接口,以及實例化后但在設置顯式屬性或發(fā)生自動裝配之前的回調(diào)。
通常用于抑制特定目標 bean 的默認實例化,例如創(chuàng)建具有特殊 TargetSources 的代理(池目標、延遲初始化目標等),或?qū)崿F(xiàn)其他注入策略,如字段注入。
注意:此接口為專用接口,主要供框架內(nèi)部使用。 建議盡可能實現(xiàn)普通的BeanPostProcessor接口,或者從InstantiationAwareBeanPostProcessorAdapter派生,以屏蔽對該接口的擴展。

2.SmartInstantiationAwareBeanPostProcessor

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

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

相關文章

  • 使用@DS輕松解決動態(tài)數(shù)據(jù)源的問題

    使用@DS輕松解決動態(tài)數(shù)據(jù)源的問題

    這篇文章主要介紹了使用@DS輕松解決動態(tài)數(shù)據(jù)源的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • JavaWeb中Servlet的深入講解

    JavaWeb中Servlet的深入講解

    這篇文章主要介紹了JavaWeb中Servlet的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Java的Shiro框架認證流程詳解

    Java的Shiro框架認證流程詳解

    這篇文章主要介紹了Java的Shiro框架認證流程詳解,Shiro 是一個功能強大和易于使用的安全框架,為開發(fā)人員提供一個直觀而全面的解決方案的認證,授權,加密,會話管理四大功能,需要的朋友可以參考下
    2024-01-01
  • Spring事務管理配置文件問題排查

    Spring事務管理配置文件問題排查

    這篇文章主要介紹了Spring事務管理配置文件問題排查,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • LeetCode程序員面試題之無重復字符的最長子串

    LeetCode程序員面試題之無重復字符的最長子串

    Java計算無重復字符的最長子串是一種常見的字符串處理算法,它的目的是找出一個字符串中無重復字符的最長子串。該算法可以很好地解決一些字符串處理問題,比如尋找字符串中重復字符的位置,以及計算字符串中無重復字符的最長子串的長度。
    2023-02-02
  • java 單例模式(懶漢式與餓漢式)

    java 單例模式(懶漢式與餓漢式)

    這篇文章主要介紹了java 單例模式的相關資料,這里對懶漢式與餓漢式都做了實例介紹,需要的朋友可以參考下
    2017-07-07
  • SpringBoot使用Redisson實現(xiàn)分布式鎖(秒殺系統(tǒng))

    SpringBoot使用Redisson實現(xiàn)分布式鎖(秒殺系統(tǒng))

    這篇文章主要為大家詳細介紹了SpringBoot使用Redisson實現(xiàn)分布式鎖,秒殺系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • JAVA調(diào)用JavaScript方法代碼示例

    JAVA調(diào)用JavaScript方法代碼示例

    我們都知道腳本語言非常靈活,在處理某些問題的時候Java實現(xiàn)用十幾行來寫,用js可能不到十行就寫完,并且非常簡潔,這篇文章主要給大家介紹了關于JAVA調(diào)用JavaScript方法的相關資料,需要的朋友可以參考下
    2023-10-10
  • Spring實現(xiàn)聲明式事務的方法詳解

    Spring實現(xiàn)聲明式事務的方法詳解

    這篇文章主要介紹了Spring實現(xiàn)聲明式事務的方法詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件

    Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件

    這篇文章主要介紹了Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10

最新評論