为JFinal添加event消息事件
为JFinal添加event消息事件
如梦技术 发表于3年前
为JFinal添加event消息事件
  • 发表于 3年前
  • 阅读 935
  • 收藏 38
  • 点赞 1
  • 评论 20

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 在之前使用spring mvc的时候,在复杂的下单和支付中有一部分功能使用的Spring事件驱动模型去完成!具体优点不啰嗦了,发现涛哥有篇文章讲得比较详细~

在之前使用spring mvc的时候,在复杂的下单和支付中有一部分功能使用的Spring事件驱动模型去完成!具体优点不啰嗦了,发现涛哥有篇文章讲得比较详细:详解Spring事件驱动模型

最初准备基于Guava 的Eventbus去实现,发现其并不太适合!以下来自官方的wiki

Why must I create my own Event Bus, rather than using a singleton? EventBus doesn't specify how you use it; there's nothing stopping your application from having separate EventBus instances for each component, or using separate instances to separate events by context or topic. This also makes it trivial to set up and tear down EventBus objects in your tests.

Of course, if you'd like to have a process-wide EventBus singleton, there's nothing stopping you from doing it that way. Simply have your container (such as Guice) create the EventBus as a singleton at global scope (or stash it in a static field, if you're into that sort of thing).

In short, EventBus is not a singleton because we'd rather not make that decision for you. Use it how you like.

JFinal-event实现得比较简单,整个代码结构如图: 代码结构

其核心原理是,使用guava Multimap转载所有的监听器和监听器监听的泛型ApplicationEvent的子类!

源码地址:

http://git.oschina.net/596392912/JFinal-event

欢迎拍砖~.~

参考代码:

https://github.com/google/guava/tree/master/guava/src/com/google/common/eventbus

https://github.com/spring-projects/spring-framework/blob/master/spring-context/src/main/java/org/springframework/context/event

共有 人打赏支持
如梦技术
粉丝 293
博文 34
码字总数 14700
作品 4
评论 (20)
JFinal
这个很牛逼,fork 了一份,代码非常漂亮,顶一个 79
如梦技术

引用来自“JFinal”的评论

这个很牛逼,fork 了一份,代码非常漂亮,顶一个 79
还有很多提升的空间~
刘yu
079 很不错的样子
zkool
79,帅
逝影落枫
没看出来对比EventBus有保优势。
如梦技术

引用来自“逝影落枫”的评论

没看出来对比EventBus有保优势。
优势谈不上,只是偏Spring的搞法,如果再把注解加上的话,个人感觉使用起来比EventBus方便!
如梦技术

引用来自“逝影落枫”的评论

没看出来对比EventBus有保优势。
最初我也是想使用EventBus整出这种用法,在我误用,以及源码级别的阅读后改成了Spring的这种。作为JFinal plugin的话,这种实现会好很多!
jianglu188
点赞哦 看起来好厉害的样子 虽然我现在转移动开发了
如梦技术

引用来自“jianglu188”的评论

点赞哦 看起来好厉害的样子 虽然我现在转移动开发了
12叔
已使用 注解扫描再加一下比较方便 maven 仓库还没上传吧
如梦技术

引用来自“12叔”的评论

已使用 注解扫描再加一下比较方便 maven 仓库还没上传吧
没呢,maven仓库没整过,周末好好研究下吧,注解扫描的也尽快加上吧!多多反馈~
fengyang
怎么修改 执行顺序呢,比如先发邮件,在增加积分
如梦技术

引用来自“fengyang”的评论

怎么修改 执行顺序呢,比如先发邮件,在增加积分
目前,基本上算是随机了,下版本中跟进下~
fengyang

引用来自“fengyang”的评论

怎么修改 执行顺序呢,比如先发邮件,在增加积分

引用来自“孤独的3”的评论

目前,基本上算是随机了,下版本中跟进下~
期待下版本了,随机不大好,jdk的观察者模式也是有顺序的
如梦技术

引用来自“fengyang”的评论

怎么修改 执行顺序呢,比如先发邮件,在增加积分

引用来自“孤独的3”的评论

目前,基本上算是随机了,下版本中跟进下~

引用来自“fengyang”的评论

期待下版本了,随机不大好,jdk的观察者模式也是有顺序的
已添加排序,@listener(order = 1) 越小越优先执行,Default is Integer.MAX_VALUE
紫电清霜
来看看咯,高大上
如梦技术

引用来自“紫电清霜”的评论

来看看咯,高大上
代码比较少,而且很多都是从spring,guava里面抠出来的~
简单代码
已用,很简便!稳定性没问题吧?
如梦技术

引用来自“简单代码”的评论

已用,很简便!稳定性没问题吧?
放心用吧
如梦技术
13 1.4.0发布到maven了,添加EventKit.post(tag, event)方法,@Listener(order = 2, tag = "save")添加tag!
复用Event,有用到的朋友可以尝鲜。
×
如梦技术
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: