日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring event 使用完全指南

發布時間:2025/3/21 javascript 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring event 使用完全指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明

此篇文章以 Spring 4.2+ 為例,在此版本之前略微有不同。 筆者自2014年起開始接觸和使用 Spring event,根據 Spring event 的原理開發了 JFinal-event: gitee.com/596392912/J… ,方便 JFinal 用戶使用,JFinal event 2.x 也同步成 Spring 4.2.x+ 的使用方式,不再需要創建多個 Listener 類,使用更加簡單方便。

使用

創建 Event 事件監聽

Spring 4.2+ 中不再需要單獨編寫監聽器類,只需要在 Spring Bean 的方法上標記 @EventListener 注解即可。

示例:多個監聽器,監聽 Account 創建,完成不同的業務邏輯。

/*** 賬號監聽,處理賬號創建成功的后續邏輯*/ @Component public class AccountListener {/*** 1. 發送郵件、短信*/@EventListenerpublic void processAccountCreatedEvent1(AccountCreatedEvent event) {// TODO}/*** 2. 添加積分等,@Order(100) 用來設定執行順序*/@EventListener@Order(100)public void processAccountCreatedEvent2(AccountCreatedEvent event) {// TODO}/*** 3. 創建 lucene 索引等,@Async 用來標記為異步線程池中執行*/@EventListener@Asyncpublic void processAccountCreatedEvent3(AccountCreatedEvent event) {// TODO} } 復制代碼

發送 Event 事件

示例:mybatis中發送賬號創建事件。

注意:如果你是使用的 jpa,jpa 也有對應的事件機制,不需要像下面手動處理。

/*** 注入 ApplicationEventPublisher*/ @Autowired private ApplicationEventPublisher publisher;@Override public boolean save(Account account) {// 偽代碼,數據庫保存成功if (true) {publisher.publishEvent(new AccountCreatedEvent(account));}return false; } 復制代碼

idea 中的快捷跳轉按鈕

@EventListener 注解屬性說明

@EventListener(value = {AccountCreatedEvent.class, AccountUpdatedEvent.class}, condition = "#event.account.age > 10") public void processAccountCreatedEvent2(AccountEvent event) {// TODO } 復制代碼
  • value 和 classes 作用相同,表示監聽的一個或一組事件,用于支持方法中同一個父類的事件,例如 AccountEvent;
  • condition 表達式,支持 Spring el,用來做 event 中的變量或者方法判斷。

監聽執行順序

可以使用 @Order(100) 注解來標記事件的監聽執行順序,異步的情況下只保證按順序將監聽器丟入進線程池,具體執行得看線程的心情 -.-

監聽異步執行

使用 @Async 標記即可,注意前提條件是:使用 @EnableAsync 開啟 Spring 異步。

Spring boot 配置異步

本節以 mica 中的異步配置為基礎講解。

異步配置

  • @EnableAsync 開啟異步。
  • @EnableScheduling?開啟定時任務。
  • MicaAsyncProperties 為異步線程池的配置。

異步配置項


配置項默認值說明
mica.async.core-pool-size2異步核心線程數,默認:2
mica.async.keep-alive-seconds300線程存活時間,默認:300
mica.async.max-pool-size50異步最大線程數,默認:50
mica.async.queue-capacity10000隊列容量,默認:10000

開源推薦

  • mica?Spring boot 微服務核心組件集:gitee.com/596392912/m…
  • Avue?一款基于vue可配置化的神奇框架:gitee.com/smallweigit…
  • pig?宇宙最強微服務(架構師必備):gitee.com/log4j/pig
  • SpringBlade?完整的線上解決方案(企業開發必備):gitee.com/smallc/Spri…
  • IJPay?支付SDK讓支付觸手可及:gitee.com/javen205/IJ…

關注我們

掃描上面二維碼,更多精彩內容每天推薦!

轉載于:https://juejin.im/post/5cac613ae51d456e7349dbca

總結

以上是生活随笔為你收集整理的Spring event 使用完全指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。