JFinal 事件驅動插件:JFinal-event
JFinal-event是JFinal框架的一個事件驅動插件,其核心目標是深層次解耦,為您節約更多時間,去陪戀人、家人和朋友 :)
事件驅動模型簡介
事件驅動模型也就是我們常說的觀察者,或者發布-訂閱模型;我是這樣理解他的:
就仿佛一塊石頭丟進了池塘里,會泛起一圈一圈的漣漪!其他人只要看到漣漪就知道你個二貨又在扔石子·。·
接下來先看一個用戶注冊的例子:
-
圖片來自開濤的博客詳解Spring事件驅動模型
-
請將圖片中的Service理解成業務
用戶注冊成功后,需要做這么多事:
-
加積分
-
發確認郵件
-
如果是游戲帳戶,可能贈送游戲大禮包
-
索引用戶數據 …………
如果這些業務都耦合到UserService或者JFinal中的UserController中,將會變得異常復雜。
下面筆者列舉使用JFinal-event來解決這類問題
編寫用戶保存事件
public class UserSaveEvent extends ApplicationEvent { private static final long serialVersionUID = 6994987952247306131L; public UserSaveEvent(Object source) { super(source); } }
在用戶save完成之后觸事件
boolean temp = userModel.save(); if (temp) { EventKit.postEvent(new UserSaveEvent(userModel)); }
后面就是個個業務的事件監聽了,例如郵件業務
// 注解標記,切勿忘記 @Listener public class UserSaveEmailListener implements ApplicationListener<UserSaveEvent> { @Override public void onApplicationEvent(UserSaveEvent event) { OrderModel order = (UserModel) event.getSource(); // 你的邏輯 // EmailUtils.sendXxxxx } }
突然春節臨近了,公司需要做活動,注冊用戶贈送優惠券,你只需要新增一個UserSaveXXXListener即
可
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!