JFinal 事件驅動插件:JFinal-event

jopen 9年前發布 | 21K 次閱讀 Web框架 JFinal-event

JFinal-event是JFinal框架的一個事件驅動插件,其核心目標是深層次解耦,為您節約更多時間,去陪戀人、家人和朋友 :)

事件驅動模型簡介

事件驅動模型也就是我們常說的觀察者,或者發布-訂閱模型;我是這樣理解他的:

就仿佛一塊石頭丟進了池塘里,會泛起一圈一圈的漣漪!其他人只要看到漣漪就知道你個二貨又在扔石子·。·

接下來先看一個用戶注冊的例子: JFinal 事件驅動插件:JFinal-event

用戶注冊成功后,需要做這么多事:

  1. 加積分

  2. 發確認郵件

  3. 如果是游戲帳戶,可能贈送游戲大禮包

  4. 索引用戶數據 …………

如果這些業務都耦合到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即


項目主頁:http://www.baiduhome.net/lib/view/home/1435374648810

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!