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

SpringBoot深入分析講解監(jiān)聽器模式上

 更新時(shí)間:2022年07月15日 09:59:38   作者:lhf2112  
監(jiān)聽器模式,大家應(yīng)該并不陌生,主要的組成要素包括了事件、監(jiān)聽器以及廣播器;當(dāng)事件發(fā)生時(shí),廣播器負(fù)責(zé)將事件傳遞給所有已知的監(jiān)聽器,而監(jiān)聽器會(huì)對自己感興趣的事件進(jìn)行處理

注:圖片來源于網(wǎng)絡(luò)

SpringBoot作為業(yè)內(nèi)公認(rèn)的優(yōu)秀開源框架,它的監(jiān)聽器是如何實(shí)現(xiàn)呢?在這里首先對一些基礎(chǔ)組件進(jìn)行分析;

1、事件ApplicationEvent

ApplicationEvent是一個(gè)抽象類,idea上展開其繼承關(guān)系如圖:

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

2、監(jiān)聽器ApplicationListener

ApplicationListener是一個(gè)接口,我們也可以通過實(shí)現(xiàn)這個(gè)接口來定義自己的監(jiān)聽器,可以通過與事件初始化器方式相似的方式進(jìn)行加載。

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

我們可以看到代碼中它接受一個(gè)上文中提到的事件泛型,這代表了此監(jiān)聽器關(guān)注的事件;

還有一種實(shí)現(xiàn)監(jiān)聽器的方式,即實(shí)現(xiàn)SmartApplicationListener接口,SmartApplicationListener繼承了ApplicationListener接口,通過這種方式實(shí)現(xiàn)監(jiān)聽器,可以同時(shí)注冊多個(gè)感興趣的事件,只需實(shí)現(xiàn)接口的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'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是一個(gè)接口,定義了添加監(jiān)聽器、刪除監(jiān)聽器、傳播事件等方法;

SpringBoot為我們實(shí)現(xiàn)了SimpleApplicationEventMulticaster這一事件廣播器,繼承關(guān)系如圖所示:

SpringBoot如何傳播事件,有時(shí)間在下一篇博文進(jìn)行整理,本文有哪些不對之處,也感謝大家的指正。

到此這篇關(guān)于SpringBoot深入分析講解監(jiān)聽器模式上的文章就介紹到這了,更多相關(guān)SpringBoot監(jiān)聽器模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解ThreadLocal工作原理及使用示例

    深入理解ThreadLocal工作原理及使用示例

    這篇文章主要介紹了深入理解ThreadLocal工作原理及使用示例,涉及ThreadLocal<T> 簡介和使用示例及ThreadLocal<T>的原理等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Spring與Mybatis相結(jié)合實(shí)現(xiàn)多數(shù)據(jù)源切換功能

    Spring與Mybatis相結(jié)合實(shí)現(xiàn)多數(shù)據(jù)源切換功能

    這篇文章主要介紹了Spring與Mybatis相結(jié)合實(shí)現(xiàn)多數(shù)據(jù)源切換功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • springboot實(shí)現(xiàn)文件上傳和下載功能

    springboot實(shí)現(xiàn)文件上傳和下載功能

    這篇文章主要為大家詳細(xì)介紹了springboot實(shí)現(xiàn)文件上傳和下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別

    java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別

    這篇文章主要介紹了java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java工程mybatis實(shí)現(xiàn)多表查詢過程詳解

    Java工程mybatis實(shí)現(xiàn)多表查詢過程詳解

    這篇文章主要介紹了Java工程mybatis實(shí)現(xiàn)多表查詢過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中實(shí)現(xiàn)線程的三種方式及對比_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中實(shí)現(xiàn)線程的三種方式及對比_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本文給大家分享了java實(shí)現(xiàn)線程的三種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-05-05
  • Java Springboot 重要知識(shí)點(diǎn)整理匯總

    Java Springboot 重要知識(shí)點(diǎn)整理匯總

    Spring Boot作為微服務(wù)中最好的Java框架,本文主要為大家整理匯總了七個(gè)Spring Boot的重要知識(shí)點(diǎn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-11-11
  • IDEA actiBPM插件安裝圖文教程

    IDEA actiBPM插件安裝圖文教程

    這篇文章主要介紹了IDEA actiBPM插件安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 最新評(píng)論

    文水县| 灵石县| 芜湖县| 蓬莱市| 天全县| 益阳市| 旅游| 诏安县| 英德市| 江城| 大洼县| 博爱县| 西平县| 缙云县| 衢州市| 轮台县| 前郭尔| 图木舒克市| 肃宁县| 绥中县| 墨玉县| 贡山| 唐河县| 衢州市| 耒阳市| 枣庄市| 土默特右旗| 平山县| 奎屯市| 苏尼特右旗| 天全县| 遵化市| 通化县| 靖江市| 昌都县| 新竹市| 吉水县| 大冶市| 醴陵市| 涞水县| 蒙阴县|