監聽者模式實踐-java事件和事件監聽器

使用事件能夠使主業務邏輯和從業務邏輯解耦;特別是異步事件監聽器,即便處理失敗了也不耽誤主業務的進行時間;這裏就簡單的介紹了一些關於spring的eventListener和event的使用錯誤技巧.web

1.一個事件監聽器只作一件事情

好比,用戶評論一個商品,咱們除了保存評論信息,還得去1通知商品的商家,2給用戶加積分;spring

通常人認爲把1,2在一個事件監聽器裏實現就能夠了,但我以爲這樣不太好,代碼的複用率過低; 若是能在一個eventListener裏實現發積分的功能,另外一個eventListener裏實現發通知的功能,這樣就更好些;異步

也符合單一職責的原則;.net

2.不適用狀況

和主流程有關的業務不適合關於發佈/訂閱模式,應該使用職責鏈模式; 應用內的主流程相關的用service服務調用,應用外的用web服務/feign調用;blog

推薦方案

應用內的使用event訂閱發佈,應用外使用消息隊列來進行訂閱發佈;隊列

關於spring 事件的使用和示例代碼;可參考我之前寫的博客,站內連接: http://www.javashuo.com/article/p-gepdbbpz-gv.html事件

相關文章
相關標籤/搜索