首頁  >  文章  >  Java  >  SpringBoot監聽器模式實例分析

SpringBoot監聽器模式實例分析

王林
王林轉載
2023-05-12 21:40:181054瀏覽

1、事件ApplicationEvent

ApplicationEvent是一個抽象類,idea上展開其繼承關係如圖:

SpringBoot監聽器模式實例分析

可見SpringBoot所定義的事件類型是極為豐富的。

2、監聽器ApplicationListener

ApplicationListener是一個接口,我們也可以透過實作這個介面來定義自己的監聽器,可以透過與事件初始化器方式相似的方式來載入。

@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
	/**
	 * Handle an application event.
	 * @param event the event to respond to
	 */
	void onApplicationEvent(E event);
}

我們可以看到程式碼中它接受一個上文中提到的事件泛型,這代表了此監聽器關注的事件;

還有一種實現監聽器的方式,即實作SmartApplicationListener接口,SmartApplicationListener繼承了ApplicationListener接口,透過此方式實作監聽器,可以同時註冊多個感興趣的事件,只需實作介面的supportsEventType方法即可;

public interface SmartApplicationListener extends ApplicationListener<ApplicationEvent>, Ordered {
	/**
	 * Determine whether this listener actually supports the given event type.
	 * @param eventType the event type (never {@code null})
	 */
	boolean supportsEventType(Class<? extends ApplicationEvent> eventType);
	/**
	 * Determine whether this listener actually supports the given source type.
	 * <p>The default implementation always returns {@code true}.
	 * @param sourceType the source type, or {@code null} if no source
	 */
	default boolean supportsSourceType(@Nullable Class<?> sourceType) {
		return true;
	}
	/**
	 * Determine this listener&#39;s order in a set of listeners for the same event.
	 * <p>The default implementation returns {@link #LOWEST_PRECEDENCE}.
	 */
	@Override
	default int getOrder() {
		return LOWEST_PRECEDENCE;
	}
}

3、事件廣播器ApplicationEventMulticaster

ApplicationEventMulticaster是一個接口,定義了添加監聽器、刪除監聽器、傳播事件等方法;

SpringBoot為我們實現了SimpleApplicationEventMulticaster這一事件廣播器,繼承關係如圖所示:

SpringBoot監聽器模式實例分析

以上是SpringBoot監聽器模式實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除