开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
JFinal-event首页、文档和下载 - JFinal 事件驱动插件 - 开源中国社区
全部项目分类
MIT
Java
跨平台
如梦技术
分享
收藏
232 人收藏
收录时间:2015-06-26
JFinal-event 详细介绍

JFinal-event是JFinal框架的一个事件驱动插件,其核心目标是深层次解耦,为您节约更多时间,去陪恋人、家人和朋友 :)

事件驱动模型简介

事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;我是这样理解他的:

就仿佛一块石头丢进了池塘里,会泛起一圈一圈的涟漪!其他人只要看到涟漪就知道你个二货又在扔石子·。·

接下来先看一个用户注册的例子: 输入图片说明

用户注册成功后,需要做这么多事:

  1. 加积分

  2. 发确认邮件

  3. 如果是游戏帐户,可能赠送游戏大礼包

  4. 索引用户数据 …………

如果这些业务都耦合到UserService或者JFinal中的UserController中,将会变得异常复杂。

下面笔者列举使用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));
}

后面就是个个业务的事件监听了,例如邮件业务

// 注解标记,切勿忘记 
@Listener 
public class UserSaveEmailListener implements ApplicationListener { 
@Override public void onApplicationEvent(UserSaveEvent event) {
    OrderModel order = (UserModel) event.getSource(); 
    // 你的逻辑 
    // EmailUtils.sendXxxxx 
}

}

突然春节临近了,公司需要做活动,注册用户赠送优惠券,你只需要新增一个UserSaveXXXListener即可.

JFinal-event

选择将代码托管在码云
你还在等什么

可能是中国最大最好的代码托管平台


大家对 JFinal-event 的评论 (全部 30 条评论)
{{repayCom.userName}}
chenruixing
能脱离jfinal 而单独只使用一个jfinal-event 功能吗? 在不引入jfinal的情况 会出现java.lang.NoClassDefFoundError: com/jfinal/plugin/IPlugin
Mandarava
多个工程如何实现远程事件通知呢?作者能否给出例子?
小99
jfinal3.0支持吗
如梦技术
不要脸的力荐一个
贾樟柯眼中的代码
这个例子没举好,那么什么应用场景比较合适呢 #JFinal-event#
顶部