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条评论