国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

塑料機械怎么做網(wǎng)站百度的網(wǎng)站網(wǎng)址

塑料機械怎么做網(wǎng)站,百度的網(wǎng)站網(wǎng)址,網(wǎng)站設(shè)計公司 國際,動態(tài)網(wǎng)站開發(fā)的目錄結(jié)構(gòu)文章目錄 什么是Spring事件監(jiān)聽機制主要組件內(nèi)置的事件監(jiān)聽類自定義事件監(jiān)聽類總結(jié) 前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站。 什么是Spring事件監(jiān)聽機制 Spring事件監(jiān)聽機制是Spr…

文章目錄

  • 什么是Spring事件監(jiān)聽機制
  • 主要組件
  • 內(nèi)置的事件監(jiān)聽類
  • 自定義事件監(jiān)聽類
  • 總結(jié)

前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站。

什么是Spring事件監(jiān)聽機制

Spring事件監(jiān)聽機制是Spring框架中的一種設(shè)計模式,主要用于處理應(yīng)用程序的各種事件。這種機制基于發(fā)布-訂閱設(shè)計模式,允許將業(yè)務(wù)邏輯解耦,并能更好地組織和管理代碼。

使用 Spring 事件監(jiān)聽機制的好處:

  1. 解耦:通過將事件的響應(yīng)邏輯交給監(jiān)聽器處理,可以將事件源和監(jiān)聽器解耦,降低代碼的耦合度。
  2. 可擴展性:可以添加新的監(jiān)聽器來處理新的事件類型,而無需修改原有代碼。
  3. 可重用性:相同類型的事件可以在多個地方處理,提高了代碼的可重用性。
  4. 異步處理:事件監(jiān)聽機制支持異步處理,可以避免阻塞主線程,提高應(yīng)用程序的性能。
  5. 事件過濾:可以使用條件篩選需要處理的事件,只對符合條件的事件進行處理。

主要組件

Spring 事件監(jiān)聽機制包括以下幾個主要組件:

  1. 事件源(Event Source):事件源是事件的發(fā)起者,通常是一個應(yīng)用程序中的特定組件或服務(wù)。當事件源發(fā)生特定事件時,會觸發(fā)事件的發(fā)布。
  2. 事件(Event):事件是事件源發(fā)出的消息,通常包含與事件相關(guān)的數(shù)據(jù)。事件可以是自定義的類,繼承自 Spring 的 ApplicationEvent 類。
  3. 監(jiān)聽器(Listener):監(jiān)聽器是訂閱了事件源的事件并負責處理事件的組件。監(jiān)聽器需要實現(xiàn) Spring 的 ApplicationListener 接口,并指定要監(jiān)聽的事件類型,該接口定義了一個onApplicationEvent方法,用于處理接收到的事件。。
  4. 發(fā)布者(Publisher):發(fā)布者是負責將事件發(fā)布給所有注冊的監(jiān)聽器的組件。在 Spring 框架中,可以使用 ApplicationContext的 publishEvent 方法來發(fā)布事件。
  5. 應(yīng)用上下文(ApplicationContext)ApplicationContext是Spring中的一個中心類,它提供了一個將事件發(fā)布到監(jiān)聽器的機制。

內(nèi)置的事件監(jiān)聽類

Spring框架提供了許多內(nèi)置的事件監(jiān)聽類,用于處理不同的事件。以下是一些常用的Spring事件監(jiān)聽類:

  1. ContextRefreshedEvent:當ApplicationContext被初始化或刷新時觸發(fā)??梢杂脕韴?zhí)行在應(yīng)用程序啟動后需要進行的初始化任務(wù)。

  2. ContextStartedEvent:當ApplicationContext被啟動(調(diào)用start()方法)時觸發(fā)??梢杂脕韴?zhí)行在應(yīng)用程序啟動后需要進行的特定任務(wù)。

  3. ContextStoppedEvent:當ApplicationContext被停止(調(diào)用stop()方法)時觸發(fā)。可以用來執(zhí)行在應(yīng)用程序停止前需要進行的清理任務(wù)。

  4. ContextClosedEvent:當ApplicationContext被關(guān)閉(調(diào)用close()方法)時觸發(fā)??梢杂脕韴?zhí)行在應(yīng)用程序關(guān)閉前需要進行的清理任務(wù)。

  5. RequestHandledEvent:當一個HTTP請求被處理完成后觸發(fā)??梢杂脕碛涗浾埱蟮奶幚硇畔⒒蜻M行其他相關(guān)操作。

這些只是一些常見的事件監(jiān)聽類,實際上Spring還提供了更多的事件監(jiān)聽類,可以滿足不同場景下的需求。開發(fā)者也可以自定義事件監(jiān)聽類,繼承自ApplicationEvent,以實現(xiàn)自己的特定事件監(jiān)聽邏輯。

Event

自定義事件監(jiān)聽類

自定義事件監(jiān)聽類之前 先來了解一下Spring事件監(jiān)聽機制的基本工作流程:

  1. 定義事件:事件通常是擴展ApplicationEvent的類的對象,它包含有關(guān)事件的信息。
  2. 定義監(jiān)聽器:監(jiān)聽器是實現(xiàn)了ApplicationListener接口的類,被定義為處理特定事件類型的類。
  3. 注冊監(jiān)聽器:通過將監(jiān)聽器注冊到Spring容器中,或者手動添加到ApplicationContext中。
  4. 發(fā)布事件:在需要的情況下,通過調(diào)用ApplicationContextpublishEvent()方法發(fā)布事件,Spring將該事件傳遞給所有匹配的監(jiān)聽器。

Spring機制基于發(fā)布-訂閱設(shè)計模式,這就像你關(guān)注了某個人,他一旦有作品更新,你就能立馬收到消息一樣。

下面舉個例子自定義一個Spring事件監(jiān)聽功能,比如你喜歡波多老師并且關(guān)注了她,波多老師一旦發(fā)布新電影你就能收到并且觀看。具體代碼如下:

  1. 定義事件MovieEvent
public class MovieEvent extends ApplicationEvent {private String movieName;public MovieEvent(Actor source , String movieName) {super(source);this.movieName = movieName;}public String getMovieName() {return movieName;}
}
@Data
public class Actor {private String name;}
  1. 定義監(jiān)聽器MovieListener

定義監(jiān)聽器有兩種方式,一是實現(xiàn) ApplicationListener接口,而是使用 @EventListener 注解。下面使用這兩種方式分別定義一個監(jiān)聽器。

@Component
public class MovieListener implements ApplicationListener<MovieEvent> {@Overridepublic void onApplicationEvent(MovieEvent event) {Actor actor = (Actor) event.getSource();String movieName = event.getMovieName();System.out.println("實現(xiàn)類監(jiān)聽器 監(jiān)聽到"+actor.getName()+" 發(fā)布了新電影,電影名字叫:"+movieName);}
}
@Component
public class MovieListener2 {@EventListenerpublic void listener(MovieEvent event) {Actor actor = (Actor) event.getSource();String movieName = event.getMovieName();System.out.println("注解監(jiān)聽器 監(jiān)聽到 "+actor.getName()+" 發(fā)布了新電影,電影名字叫:"+movieName);}
}

@EventListener注解是方法級別的注解,使用它可以在一個類中定義多個監(jiān)聽方法。

  1. 測試事件發(fā)布功能
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MqApplication.class)
public class RestTest {@Autowiredprivate ApplicationEventPublisher applicationEventPublisher;@Autowiredprivate ApplicationContext applicationContext;@Testpublic void testEvent(){Actor boDuo = new Actor();boDuo.setName("波多老師");MovieEvent movieEvent = new MovieEvent(boDuo , "好好學習,別胡思亂想!");applicationContext.publishEvent(movieEvent);}
}

測試結(jié)果:

實現(xiàn)類監(jiān)聽器 監(jiān)聽到波多老師 發(fā)布了新電影,電影名字叫:好好學習,別胡思亂想!
注解監(jiān)聽器 監(jiān)聽到 波多老師 發(fā)布了新電影,電影名字叫:好好學習,別胡思亂想!

ApplicationContext 繼承了 ApplicationEventPublisher ,所以發(fā)布事件既可以通過 ApplicationEventPublisher#publishEvent() 方法,也可以通過ApplicationContext#publishEvent() 方法。

通過上面的測試結(jié)果可以發(fā)現(xiàn),兩個監(jiān)聽類最終都監(jiān)聽到了MovieEvent ,都在控制臺打印結(jié)果了。
實際上Spring的事件監(jiān)聽機制對于同一個事件的監(jiān)聽是同步的,默認情況下是同步的。當事件被發(fā)布時,Spring會依次通知所有監(jiān)聽該事件的監(jiān)聽器,并在事件發(fā)布的同一線程中依序執(zhí)行監(jiān)聽器的處理邏輯。
這意味著,當一個事件被觸發(fā)后,事件監(jiān)聽器的執(zhí)行是按照注冊的順序依次進行的,前一個監(jiān)聽器完成后才會執(zhí)行下一個監(jiān)聽器。只有當所有監(jiān)聽器都執(zhí)行完畢后,事件發(fā)布者才會繼續(xù)往下執(zhí)行。

如果想實現(xiàn)異步可以在監(jiān)聽器的方法上添加@Async注解,或在配置文件中進行相應(yīng)的配置,可以使監(jiān)聽器的處理邏輯在不同的線程中執(zhí)行,從而實現(xiàn)異步處理。

如果是想實現(xiàn)監(jiān)聽器按照指定順序執(zhí)行,可以使用 @Order 注解,@Order注解的值越小,優(yōu)先級越高,即執(zhí)行順序越靠前。

總結(jié)

總的來說,Spring事件監(jiān)聽機制使用起來簡單方便,可以是組件之間解耦,提高了代碼的可維護性和可擴展性。當需要使用監(jiān)聽機制的時候,Spring的事件監(jiān)聽機制是個很好的選擇之一。

http://m.aloenet.com.cn/news/29966.html

相關(guān)文章:

  • wordpress 網(wǎng)易云跟帖重慶seo公司怎么樣
  • 專業(yè)微信網(wǎng)站建設(shè)公司首選公司怎么在百度上推廣自己的公司信息
  • 去除 做網(wǎng)站就用建站之星可以搜索國外網(wǎng)站的搜索引擎
  • 電子商務(wù)網(wǎng)站建設(shè)及管理谷歌廣告推廣網(wǎng)站
  • 惠州百優(yōu)做網(wǎng)站小程序熊掌號合肥網(wǎng)絡(luò)推廣軟件系統(tǒng)
  • 網(wǎng)站頁面管理seo網(wǎng)站優(yōu)化專家
  • 網(wǎng)站開發(fā)流程的三個部分百度網(wǎng)站官網(wǎng)入口網(wǎng)址
  • frontpage可以做網(wǎng)站嗎百度seo軟件首選帝搜軟件
  • 網(wǎng)上購物平臺大全seo免費外鏈工具
  • 愛情表白制作網(wǎng)頁的網(wǎng)站培訓(xùn)平臺有哪些
  • 泰安網(wǎng)站建設(shè)如何郴州seo網(wǎng)絡(luò)優(yōu)化
  • wordpress 用戶導(dǎo)入優(yōu)化軟件刷排名seo
  • 廣州智能建站seo診斷方案
  • 電商網(wǎng)站的功能有哪些深圳網(wǎng)站建設(shè)找哪家公司好
  • 成都自由行4天最佳路線自貢網(wǎng)站seo
  • 用jsp做的動態(tài)網(wǎng)站seo外鏈推廣工具下載
  • 武漢外貿(mào)網(wǎng)站建設(shè)網(wǎng)站推廣交換鏈接
  • 可以看男男做的視頻網(wǎng)站成都網(wǎng)站優(yōu)化平臺
  • 專業(yè)維護網(wǎng)站的公司中國最新疫情最新消息
  • 手機網(wǎng)站 普通網(wǎng)站網(wǎng)絡(luò)營銷平臺名詞解釋
  • vs2015做的網(wǎng)站廈門人才網(wǎng)招聘官網(wǎng)
  • vue 做網(wǎng)站 seo口碑推廣
  • 網(wǎng)站公安備案 工信備案seo優(yōu)化一般多少錢
  • 全國分類信息網(wǎng)站神點擊惡意點擊軟件
  • 做網(wǎng)站設(shè)計是什么專業(yè)啦啦啦資源視頻在線觀看8
  • 廣東東莞疫情風險等級保定seo排名
  • 做網(wǎng)站 語言溫州seo網(wǎng)站建設(shè)
  • 網(wǎng)站怎么防黑客鄭州seo優(yōu)化顧問熱狗
  • 做視頻網(wǎng)站投入多少班級優(yōu)化大師怎么用
  • intitle 網(wǎng)站建設(shè)百度關(guān)鍵詞收費標準