Spring Boot Event 觀察者模式,輕松帶你實現(xiàn)業(yè)務解耦!
點擊上方“Java技術(shù)江湖”,選擇“設為星標”
回復”666“獲取全網(wǎng)最熱的Java核心知識點整理
寫在最前
實際業(yè)務開發(fā)過程中,業(yè)務邏輯可能非常復雜,核心業(yè)務 + N個子業(yè)務。如果都放到一塊兒去做,代碼可能會很長,耦合度不斷攀升,維護起來也麻煩,甚至頭疼。還有一些業(yè)務場景不需要在一次請求中同步完成,比如郵件發(fā)送、短信發(fā)送等。
MQ 確實可以解決這個問題,但 MQ 重啊,非必要不提升架構(gòu)復雜度。針對這些問題,我們了解一下 Spring Event。
Spring Event 同步使用
Spring Event(Application Event)其實就是一個觀察者設計模式,一個 Bean 處理完成任務后希望通知其它 Bean 或者說一個 Bean 想觀察監(jiān)聽另一個Bean 的行為。
推薦一個 Spring Boot 基礎實戰(zhàn)教程:
https://github.com/javastacks/spring-boot-best-practice
1.自定義事件
定義事件,繼承 ApplicationEvent 的類成為一個事件類

2.定義監(jiān)聽器
監(jiān)聽并處理事件,實現(xiàn) ApplicationListener 接口或者使用 @EventListener 注解

3.定義發(fā)布者
發(fā)布事件,通過 ApplicationEventPublisher 發(fā)布事件

4.單測執(zhí)行

執(zhí)行結(jié)果如下:

Spring Event 異步使用
有些業(yè)務場景不需要在一次請求中同步完成,比如郵件發(fā)送、短信發(fā)送等。另外,最新面試題整理好了,點擊Java面試庫小程序在線刷題。
1.自定義事件

2.定義監(jiān)聽器
推薦使用 @EventListener 注解

3.定義發(fā)布者

4.單測執(zhí)行(同步)

執(zhí)行結(jié)果如下:

5.開啟異步
啟動類增加 @EnableAsync 注解

Listener 類需要開啟異步的方法增加 @Async 注解

6.單測執(zhí)行(異步)
發(fā)送短信的線程顯示 task-1,主線程結(jié)束后(總耗時:(2017)毫秒)控制臺停止打印了

來源:blog.csdn.net/csp732171109/article/details/124377254
— End —

為什么國內(nèi)做不出 JetBrains 那樣的產(chǎn)品?

再見,Java泛型 T、E、K、V、?。通用泛型要來了,非常勁爆!

重磅!騰訊正式開源 Spring Cloud Tencent,功能真心強大!
關(guān)注公眾號【Java技術(shù)江湖】后回復“PDF”即可領(lǐng)取200+頁的《Java工程師面試指南》
強烈推薦,幾乎涵蓋所有Java工程師必知必會的知識點,不管是復習還是面試,都很實用。

