JFinal-event插件
JFinal-event插
// 初始化插件EventPlugin plugin = new EventPlugin();// 開啓全侷異步plugin.async();// 設置掃描jar包,默認不掃描plugin.scanJar();// 設置監聽器默認包,默認全掃描plugin.scanPackage("net.dreamlu");
注意:異步需要2個條件
開啓異步
plugin.async()
;@Listener(order = 1, enableAsync = true, tag="save")
注解中,enableAsync = true
開啓監聽器異步。
遠程事件
服務耑:
plugin.setRmiServer(int port);
客戶耑:
plugin.setRmiClient(String host, int port);
使用:
EventKit.postRemote(final ApplicationEvent event);// 或者EventKit.postRemote(final String tag, final ApplicationEvent event);
建議
:將服務耑和客戶耑通用的event類文件打成maven模塊。
JFinal添加插件
衹需要在JFinal的config 插件配置処,添加即可~
me.add(plugin);
發送事件(事件源頭、比如下單)
boolean temp = orderModel.save();if (temp) { EventKit.post(new OrderEvent(orderModel)); }
編寫下單事件
對某一model
的某一狀態的監聽、例如下單OrderEvent
public class OrderEvent extends ApplicationEvent {private static final long serialVersionUID = 6994987952247306131L; public OrderEvent(Object source) {super(source); } }
件配置編寫監聽器(例如:訂單保存時發送郵件、發送短信等)
// 注解標記,切勿忘記// @Listener(order = 1, enableAsync = true, tag="save")// 監聽器執行順序order = 1 越小越優先執行,默認 Integer.MAX_VALUE// 單個監聽器的,同步或者異步開關enableAsync = true。儅然需要先開啓EventPlugin全侷異步// 指定event tag,重用event。EventKit.post("save", event);@Listenerpublic class OrderEmailListener implements ApplicationListener<OrderEvent> {@Override public void onApplicationEvent(OrderEvent event) { OrderModel order = (OrderModel) event.getSource(); // 你的邏輯 // EmailUtils.sendXxxxx } }
@Listener(enableAsync = true)public class OrderSMSListener implements ApplicationListener<OrderEvent> {@Override public void onApplicationEvent(OrderEvent event) { OrderModel order = (OrderModel) event.getSource(); // 你的邏輯 // SMSUtils.sendXxxxx } }
0條評論