SpringBoot 中的監聽器模式


1、SpringBoot中的監聽器模式

1) 監聽器 ApplicationListener

@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
    void onApplicationEvent(E var1);
}

FunctionalInterface是jdk8新增的,表示ApplicationListener接口只有一個方法,如果大於一個方法,就不能使用這注解

接口中有個泛型<E extends ApplicationEvent>,繼承自ApplicationEvent。就代表這實現這個接口時,可以聲明對哪些事件(如ApplicationEvent)感興趣,在觸發監聽器的時候,對感興趣的事件進行過濾。

 

2) 系統廣播器ApplicationEventMulticaster接口

public interface ApplicationEventMulticaster {
    void addApplicationListener(ApplicationListener<?> var1);

    void addApplicationListenerBean(String var1);

    void removeApplicationListener(ApplicationListener<?> var1);

    void removeApplicationListenerBean(String var1);

    void removeAllListeners();

    void multicastEvent(ApplicationEvent var1);

    void multicastEvent(ApplicationEvent var1, @Nullable ResolvableType var2);
}

  ApplicationEventMulticaster接口主要有三類方法,增加監聽器,刪除監聽器,廣播方法

 

3) 系統事件 【問題】SpringBoot框架有哪些事件?

 

4) 【問題】SpringBoot中的事件發送順序

待補充

 

5) 監聽器注冊

類似於前面介紹的初始化器。在設置初始化器后面調用設置監聽器

setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));

 和初始化器調用的同一個方法getSpringFactoriesInstances,只是參數為ApplicationListener.class

 

Debug后,可以發現有以下監聽器,如下圖。【問題】SpringBoot關於監聽器相關的實現類有哪些?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM