事件驱动
本框架支持应用内部和集群节点间事件驱动,集群事件将会在微服务版块进行专题介绍,这里只介绍应用内部事件驱动。
#
系统预定义事件定义事件
系统预定义事件都以字符串常量的方式放在Event类中。触发事件
系统预定义事件都由框架自行触发,无须用户触发。如确有必要,触发方式和下面自定义事件的触发方式一样。注解方式监听事件
- 首先定义监听器方法,方法可以是无参数方法,如果需要事件参数,方法也可以有一个入参,即事件类型,通用事件的入参是GeneralEvent类型。
- 为该方法添加@EventListener注解,该注解有多个参数可供设置,name用来指定通用事件类型,async用来设定同步或异步触发,condition用来补充设置触发条件,order用来设定监听器优先级权重。 请看下面的实例:
- 程序动态监听事件
有时候需要动态的监听事件,而不是一开始就能通过@EventListener注解确定监听的事件类型。 首先单独定义一个监听类,和上面一样定义一个监听器方法,这里是eventHandler(GeneralEvent event),有一个入参接收事件对象。 然后定义一个动态监听方法来动态绑定监听器和事件,例如下面的listen(Event event, boolean async),根据需要自行设计。
然后在程序中可以随时利用上面的类来动态的监听事件:
#
自定义事件- 定义事件
本框架中事件分为通用事件和特定事件,通用事件因为简单快捷应用最广,系统预定义事件都是通用事件。两种类型事件都可以用户端自定义:
- 通用事件
首先定义一个事件容器,每个事件就是一个字符串常量。请务必确定事件名称不能和系统预定义事件名称重复。见下面实例:
- 特定事件
特定事件可以深度自定义事件对象,可以开发更复杂的事件行为。需要继承自BaseEvent事件基类,见下面的实例:
上面的实例定义了一个事件,支持传递字符串消息。
- 触发事件
事件触发通常可以直接Ready.post(事件对象)方式触发,通用事件对象由GeneralEvent类包装,自定义特定事件就是特定事件对象实例。
- 监听事件
和上面的预定义事件一样,可以通过注解和程序动态添加监听器来监听事件。通用事件和特定事件的监听方式略有不同,见下面的实例:
上面实例演示了自定义事件的注解方式监听,程序方式监听和前面的系统预定义事件相同。
#
更多文档以上是本框架提供的常用事件驱动应用介绍,还有更多事件方面的文档将在后续不断完善,重点内容将以专题形式提供。