JFinal-event插件,第1张

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
	}

}
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » JFinal-event插件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情