JFinal-event是一个模仿的Spring中的消息事件插件。专为JFinal设计,无任何第三方依赖,小巧玲珑。
其核心目标是深层次解耦,为您节约更多时间,去陪恋人、家人和朋友 :)
1. JFinal-event插件配置
// 初始化插件 EventPlugin plugin = new EventPlugin(); // 开启全局异步 plugin.async(); // 设置扫描jar包,默认不扫描 plugin.scanJar(); // 设置监听器默认包,默认全扫描 plugin.scanPackage("net.dreamlu");
2. JFinal添加插件
只需要在JFinal的config 插件配置处,添加即可~
me.add(plugin);
3. 发送事件(事件源头、比如下单)
boolean temp = orderModel.save(); if (temp) { EventKit.post("save", new OrderEvent(orderModel)); }
4. 编写下单事件
建议对某一`model`的某一状态的监听、例如下单`OrderEvent`
public class OrderEvent extends ApplicationEvent { private static final long serialVersionUID = 6994987952247306131L; public OrderEvent(Object source) { super(source); } }
5. 编写监听器(例如:订单保存时发送邮件、发送短信等)
// 注解标记,切勿忘记 // @Listener(order = 1, enableAsync = true, tag="save") // 监听器执行顺序order = 1 越小越优先执行,默认 Integer.MAX_VALUE // 单个监听器的,同步或者异步开关enableAsync = true。当然需要先开启EventPlugin全局异步 // 指定event tag,重用event。EventKit.post("save", event); @Listener(order = 2, tag = "save") public class OrderEmailListener implements ApplicationListener<OrderEvent> { @Override public void onApplicationEvent(OrderEvent event) { OrderModel order = (OrderModel) event.getSource(); // 你的逻辑 // EmailUtils.sendXxxxx } } @Listener(enableAsync = true, tag = "save") public class OrderSMSListener implements ApplicationListener<OrderEvent> { @Override public void onApplicationEvent(OrderEvent event) { OrderModel order = (OrderModel) event.getSource(); // 你的逻辑 // SMSUtils.sendXxxxx } }
当然,此次更新之后相当于整个项目中可只编写一个ObjectEvent,为了维护方便,建议大家还是根据Model来编写,以免日后维护时蒙逼~
jar包下载:http://maven.aliyun.com/nexus/#nexus-search;quick~jfinal-event
以上版本均已上传到maven仓库~
<dependency> <groupId>net.dreamlu</groupId> <artifactId>JFinal-event</artifactId> <version>1.4.0</version> </dependency>
源码地址:http://git.oschina.net/596392912/JFinal-event
QQ交流群:237587118
项目:JFinal-event