JFinal-eventJFinal 事件驅(qū)動(dòng)插件
JFinal-event是JFinal框架的一個(gè)事件驅(qū)動(dòng)插件,其核心目標(biāo)是深層次解耦,為您節(jié)約更多時(shí)間,去陪戀人、家人和朋友 :)
事件驅(qū)動(dòng)模型簡介
事件驅(qū)動(dòng)模型也就是我們常說的觀察者,或者發(fā)布-訂閱模型;我是這樣理解他的:
就仿佛一塊石頭丟進(jìn)了池塘里,會(huì)泛起一圈一圈的漣漪!其他人只要看到漣漪就知道你個(gè)二貨又在扔石子·。·
接下來先看一個(gè)用戶注冊(cè)的例子:
圖片來自開濤的博客詳解Spring事件驅(qū)動(dòng)模型
請(qǐng)將圖片中的Service理解成業(yè)務(wù)
用戶注冊(cè)成功后,需要做這么多事:
加積分
發(fā)確認(rèn)郵件
如果是游戲帳戶,可能贈(zèng)送游戲大禮包
索引用戶數(shù)據(jù) …………
如果這些業(yè)務(wù)都耦合到UserService或者JFinal中的UserController中,將會(huì)變得異常復(fù)雜。
下面筆者列舉使用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));
}
后面就是個(gè)個(gè)業(yè)務(wù)的事件監(jiān)聽了,例如郵件業(yè)務(wù)
// 注解標(biāo)記,切勿忘記
@Listener
public class UserSaveEmailListener implements ApplicationListener {
@Override public void onApplicationEvent(UserSaveEvent event) {
OrderModel order = (UserModel) event.getSource();
// 你的邏輯
// EmailUtils.sendXxxxx
}
}
突然春節(jié)臨近了,公司需要做活動(dòng),注冊(cè)用戶贈(zèng)送優(yōu)惠券,你只需要新增一個(gè)UserSaveXXXListener即可.
評(píng)論
圖片
表情
