JFinal-event是JFinal框架的一个事件驱动插件,其核心目标是深层次解耦,为您节约更多时间,去陪恋人、家人和朋友 :)
事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;我是这样理解他的:
就仿佛一块石头丢进了池塘里,会泛起一圈一圈的涟漪!其他人只要看到涟漪就知道你个二货又在扔石子·。·
接下来先看一个用户注册的例子:
图片来自开涛的博客详解Spring事件驱动模型
请将图片中的Service理解成业务
用户注册成功后,需要做这么多事:
加积分
发确认邮件
如果是游戏帐户,可能赠送游戏大礼包
索引用户数据…………
如果这些业务都耦合到UserService或者JFinal中的UserController中,将会变得异常复杂。
编写用户保存事件
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即可.
首先,类的写法 public class InvestEvent extends ApplicationEvent{ private static final long serialVersionUID = 1L; public InvestEvent(Object source) { super(source); } } @Listener(ord
说明 JFinal-event 2.x 参考 Spring 4.2.x 中 Event 的使用方式而生,为 JFinal 用户带来更多方便。其核心目标是深层次解耦,为您节约更多时间,去陪恋人、家人和朋友 :) 年初 @idoz 提议实现类似 Spring 4.2 里的 PayloadApplicationEvent,其实我早就有此想法,一直没有抽出时间来折腾。 顺便在 码云上添加了 issues
webSocket处理类com.zr.platform.websocketjava.io.IOExceptionjava.util.Setjava.util.concurrent.CopyOnWriteArraySetjava.util.concurrent.atomic.AtomicIntegerjavax.websocket.javax.websocket.javax.websocket.ja
JFinal在1.9版本的时候,整合的有springPlugin插件,但是 在2.0以后,就不在使用SpringPlugin插件,现在要整合一下spring,经过试验,终于整合好了,下面贴代码: 首先:web.xml配置: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "htt
在使用JFinal3.2的时候发现,JFinal提供的Enjoy Template Engine这个模版工具挺好用,就想集成到SpringMVC中使用。首先,先按照使用文档操作一番。把jsp或freemarker等模版的bean配置替换成enjoy的配置; JSP模版 <bean class="org.springframework.web.servlet.view.I
看了波总在群里给一个兄弟的回复,刚开始想按波总的思路搞,其实很简单,甚至都没有自己写拦截器 @jfinal 微信的每个touser 和fromuser都是不一样的,就根据传过来的原始ID与系统的用户表匹配,然后查询出相应信息,包括生成菜单、配置的回复消息什么的之类,思路就这样。 新建一张公众账号的数据库表 ,保存公众号的appid ,appsecret,原始ID等,当然,还有一个字段和系统用户表关
本文向大家介绍Node.js事件驱动,包括了Node.js事件驱动的使用技巧和注意事项,需要的朋友参考一下 Node.js事件驱动实现概览 虽然在ECMAScript的标准里并没有(也没有必要)明确规定“事件”,但是在浏览器中,事件作为一个极为重要的机制,给予JavaScript响应用户操作与DOM变化的能力;在Node.js中,异步事件驱动模型则是其高并发能力的基础。 学习JavaScript也
8.1.3 事件驱动 图形构件组成了图形界面的可见部分,在这些可见构件的背后,还有不可见的程序逻辑。 就好比家用电器都提供操作面板,用户通过操作面板控制、使用电器功能,在面板的背后是 实现功能的电路逻辑。 GUI 应用程序的特点是注重与用户的交互,因此程序的执行取决于与用户的实时交互情 况。例如 Word 程序启动后,并非一路执行到程序结束,而是在做了必要的初始化工作后就 停下来,等待用户的下一步
8.3 Tkinter 事件驱动编程 在 8.2 节中我们学习了图形用户界面中的各种构件的用法,至此我们已经能够为应用程 序搭建用户界面的外观部分,用户界面的另一个重要部分是各界面元素所对应的程序功能。 GUI 应用程序与普通应用程序的一个不同之处就在于,实现程序功能的代码与图形界面元素 相关联,这导致了一种新的程序执行模式——事件驱动。8.1.3 中简单介绍了事件驱动编程的 基本概念,现在我们来
在前面的文章中我们简单介绍了事件驱动编程,现在让我们看看真实的代码并介绍EventBus的基础用法。 首先我会参考下图(从EventBus仓库截取的),介绍在事件驱动编程中扮演中心角色的实体们。 事件总线EventBus:连接所有其他实体的中央通信通道; 事件Event:发生的动作,几乎可以是任何事情(应用启动,收到某些数据,用户交互等等); 订阅者Subscriber:订阅者监听事件总线,当总线
虽然在Android开发具有某些事件驱动的特性,但它还远不是纯粹的事件驱动架构。这算是好事还是坏事呢?正如在软件开发领域中任何事情一样,想回答它并不容易:这取决于具体情况。 首先我们来给事件驱动编程下一个定义。事件驱动编程是一种编程范式,程序的执行流程是由动作(actions,例如用户交互,其他线程发送的消息等等)触发的事件(event)决定的。在这个意义上,Android是部分事件驱动:我们都知
问题 你应该已经听过基于事件驱动或异步I/O的包,但是你还不能完全理解它的底层到底是怎样工作的, 或者是如果使用它的话会对你的程序产生什么影响。 解决方案 事件驱动I/O本质上来讲就是将基本I/O操作(比如读和写)转化为你程序需要处理的事件。 例如,当数据在某个socket上被接受后,它会转换成一个 receive 事件,然后被你定义的回调方法或函数来处理。 作为一个可能的起始点,一个事件驱动的框
本文向大家介绍wxPython事件驱动实例详解,包括了wxPython事件驱动实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了wxPython的事件驱动机制,分享给大家供大家参考。具体方法如下: 先来看看如下代码: 程序运行效果如下图所示: wxStaticText的两个构造函数官方文档如下: wxStaticText () Default constructor. wxSt
事件驱动的编程侧重于事件。 最终,程序的流程取决于事件。 到目前为止,我们处理顺序或并行执行模型,但具有事件驱动编程概念的模型称为异步模型。 事件驱动的编程取决于始终侦听新传入事件的事件循环。 事件驱动编程的工作取决于事件。 一旦事件循环,然后事件决定执行什么以及以什么顺序执行。 以下流程图将帮助您了解其工作原理 - Python Module – Asyncio Asyncio模块是在Pytho