SpringEvent解耦神器+觀察者模式典范

Spring Event
Spring Event是Spring框架的一項(xiàng)功能,它允許不同組件之間通過發(fā)布-訂閱機(jī)制進(jìn)行解耦的通信。在Spring中,事件是表示應(yīng)用程序中特定事件的對象,如用戶注冊、登錄等。當(dāng)這些事件發(fā)生時(shí),可以通知其他組件來執(zhí)行相應(yīng)的操作。
Spring Event 示例
創(chuàng)建一個(gè)事件
如當(dāng)一個(gè)用戶登錄時(shí),創(chuàng)建一個(gè)名叫LoginEvent的事件繼承ApplicationEvent
創(chuàng)建事件發(fā)布者用戶發(fā)布事件
創(chuàng)建事件監(jiān)聽器
創(chuàng)建事件監(jiān)聽器,用于監(jiān)聽用戶登錄事件,支持創(chuàng)建一個(gè)或者多個(gè),吃瓜可以1個(gè)和N個(gè)
模擬用戶登錄
解耦配合異步(@Async)相當(dāng)絲滑
適用于內(nèi)部組件之間的通信和解耦,本身不提供強(qiáng)制的可靠性保證機(jī)制,可靠性通常由應(yīng)用開發(fā)者來保證。
事件不能像消息隊(duì)列中間件那樣跨服務(wù),跨應(yīng)用的分布式異步處理,但可以結(jié)合使用,在事件做過濾在發(fā)送到中間件。
在回顧一下觀察者模式(Observer Pattern)
四個(gè)關(guān)鍵元素
主題(Subject):也稱為被觀察者,它維護(hù)了一個(gè)觀察者列表并提供方法來添加、刪除和通知觀察者。主題的狀態(tài)變化會通知觀察者。
2. 觀察者(Observer):觀察者是依賴于主題的對象,它們注冊自己以接收主題的通知。當(dāng)主題狀態(tài)發(fā)生變化時(shí),觀察者會收到通知并執(zhí)行相應(yīng)的操作。
4. 具體觀察者(Concrete Observer):具體觀察者是觀察者的具體實(shí)現(xiàn),它實(shí)現(xiàn)了更新操作以響應(yīng)主題的通知。

ApplicationEvent, ApplicationEventPublisher, ApplicationEventMulticaster ,調(diào)用監(jiān)聽